通过Nacos实现多环境部署

1字数 423阅读 3381

最近看到Nacos出了Pre-GA版本0.8.0,新增了login/namespace等一些实用的功能,新增功能如下

  • Support Login (default user and password is nacos/nacos)
  • Support prometheus
  • Naming service support namespace
  • Add users/roles tables

恰好最近写毕设最让我头疼的就是如何切换本地环境和线上环境,因为我的服务间调用都是走的 Feign 通过服务名来调用,这样当我本地起服务进行调试时就可能会调用到线上的服务,而 namespace 的出现解决了我这个问题。

下面简单介绍下多环境部署的一些操作

  1. 从 Nacos 新建一个 namespace


    namespace
  2. 配置项目
    用过 Nacos 做配置中心的都会知道,服务配置要写在 bootstrap.yml 中,所以我们新建 bootstrap-dev.yml 和 bootstrap-prod.yml 两个文件,同时在 bootstrap.yml 做好配置

#  bootstrap.yml
spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848/nacos
        file-extension: yml
        shared-dataids: mysql.yml,redis.yml,printlog.yml,es.yml
        refreshable-dataids: mysql.yml,redis.yml,es.yml
  profiles:
    active: prod // 默认使用prod线上环境
  application:
    name: pf-user
#  bootstrap-dev.yml
spring:
  cloud:
    nacos:
      config:
        namespace: c248e1c9-f10e-40 # 填写刚才我们新建 namespace 时生成的 id
      discovery:
        namespace: c248e1c9-f10e-40

线上环境因为我使用的默认 namespace ,所以不需要配置,这里需要注意一个小问题,如果我们使用 0.2.1.RELEASE 的 spring-cloud-starter-alibaba-nacos-discovery 会发现,discovery的namespace不生效,我从 issue 中发现了作者提供的解决办法,引入 0.8.0 的 nacos-client 进行覆盖。

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>0.8.0</version>
        </dependency>
  1. 在 Nacos 中创建配置文件(不要忘记点左上角进行 namespace 切换)


    config
  2. 本地启动项目(启动前将 Active profiles 设置为dev)


    idea

这时我们就已经完成了多环境部署的所有步骤,使用起来还是比较方便的。

梦想提供着不竭的动力,而现实却如沉重大山,但我们仍要负重前行。

推荐阅读更多精彩内容