文档说明
- 适用架构:SpringCloud Alibaba + Nacos(注册中心 + 配置中心)+ Gateway 网关多微服务(示例:amip-auth、amip-server-system 等)
- 核心逻辑:Nacos Namespace 隔离环境,prod 独立命名空间、独立配置集、独立服务分组,本地 / 测试 / 生产环境完全隔离,不污染其他环境配置
- 目标:从零搭建一套可上线的 prod 生产环境,包含 Nacos 后台操作、项目配置改造、部署规范
一、前置准备
1. 环境资源清单
| 资源 | 说明 |
|---|---|
| Nacos 服务集群 | 生产独立 Nacos 集群(禁止和 dev/test 共用一套 Nacos),地址:nacos-prod-xxx:8848 |
| 生产服务器集群 | 微服务部署机器、数据库、Redis、MQ、存储中间件(prod 独立实例,不共用测试) |
| 项目代码仓库 | Git 主干分支为 prod 稳定分支,禁止合并测试未验证代码 |
| 数据库 prod 库 | 独立库、独立账号、生产级权限 |
2. 环境规范约定(统一标准,所有微服务遵守)
- Namespace 命名规范
dev:amip-dev(开发)
test:amip-test(测试)
prod:amip-prod(生产) - Group 分组规范
业务微服务统一分组:AMIP_PROD_GROUP(区分测试默认 DEFAULT_GROUP) - DataId 配置文件命名规范
# 单服务私有配置 {服务名}-prod.yaml 示例:amip-auth-prod.yaml、amip-gateway-prod.yaml - 服务名统一:spring.application.name 固定不变,仅通过 namespace/group/env 区分环境
二、第一步:Nacos 后台创建 Prod 隔离环境
2.1 创建生产 Namespace
- 登录生产独立 Nacos 控制台(区分测试 Nacos 地址)
- 左侧菜单:命名空间 → 新建命名空间
- 命名空间名称:amip-prod
- 命名空间 ID:amip-prod(必须手动填写,后续代码配置使用)
- 描述:生产环境隔离命名空间,所有线上微服务注册、配置存放于此
- 提交创建,切换命名空间到 amip-prod,后续所有操作均在此命名空间内
2.2 Nacos 配置中心新建 prod 配置集
2.2.1 新建单个微服务私有配置(以 amip-auth 为例)
- 配置管理 → 新建配置
- Data ID:amip-auth-prod.yaml
- Group:AMIP_PROD_GROUP
- 格式:YAML
- 服务私有配置模板
spring:
# 模板引擎配置
freemarker:
allow-request-override: false
allow-session-override: false
check-template-location: true
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: true
prefer-file-system-access: true
# 后缀名
suffix: .ftl
content-type: text/html
enabled: true
# 缓存配置
cache: true
# 模板加载路径 按需配置
template-loader-path: classpath:/templates/
charset: UTF-8
swagger:
title: AMIP Swagger API
version: 2.7.0
description: 授权中心服务
license: Powered By Anke
licenseUrl: https://www.ankepower.com
terms-of-service-url: https://www.ankepower.com
contact:
name: anke
email: zhuangxh@ankepower.com
url: https://www.ankepower.com
authorization:
name: password
token-url-list:
- http://${GATEWAY_HOST:localhost}:${GATEWAY_PORT:88}/auth/oauth/token
# 第三方登录授权配置
oauth2:
github:
clientId: amip
clientSecret: amip
redirectUri: http://localhost:8000/login/oauth2/github
- 同理,所有微服务(gateway、system、file 等)均创建 {服务名}-prod.yaml 私有配置
2.2.2 Nacos 服务管理:确认 Prod 分组(无需提前创建,服务启动自动注册)
- 切换命名空间 amip-prod → 服务管理
- 后续微服务启动后,会自动注册到分组AMIP_PROD_GROUP,生产环境所有实例仅在此分组展示,和测试环境完全隔离
三、第二步:SpringBoot 项目本地配置改造(bootstrap.yml 核心,对接 Nacos Prod 环境)
3.1 配置文件分层规则
SpringCloud Alibaba 加载优先级:Nacos远程配置 > application.yml
所有环境切换逻辑写在application.yml仅放本地调试默认值,生产不生效
3.2 项目 application.yml 完整模板(支持 dev/test/prod 多环境切换 Nacos)
server:
port: 18081
spring:
application:
# 应用名称
name: @artifactId@
profiles:
# 环境配置
active: @active@
cloud:
nacos:
username: ${NACOS_USERNAME:}
password: ${NACOS_PASSWORD:}
discovery:
# 服务注册地址
server-addr: ${NACOS_HOST:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:}
config:
# 配置中心地址
server-addr: ${spring.cloud.nacos.discovery.server-addr}
# 配置文件格式
file-extension: yml
# 命名空间
namespace: ${NACOS_NAMESPACE:}
# 配置组
group: ${NACOS_GROUP:DEFAULT_GROUP}
# 共享配置
# shared-configs:
# - data-id: amip-app-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 暂时修复因sentinel导致的无法启动
# openfeign:
#lazy-attributes-resolution: true
config:
import:
- optional:classpath:application-${spring.profiles.active}.yml
- optional:nacos:amip-app-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- optional:nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
3.3 application-prod.yml
切换成prod后
NACOS_HOST: 192.168.1.211:8848
NACOS_USERNAME: nacos
NACOS_PASSWORD: nacos
NACOS_NAMESPACE: amip-prod3.4 Maven 打包环境区分(pom.xml 配置 env 变量)
在pom.xml增加环境 profile,打包 prod 包时自动绑定环境变量
<profiles>
<!-- 生产环境profile -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
</profiles>
打包生产包命令:
shell
mvn clean package -Pprod -DskipTests作者:caoyl 创建时间:2026-06-25 14:05
最后编辑:caoyl 更新时间:2026-06-25 15:37
最后编辑:caoyl 更新时间:2026-06-25 15:37