refactor(ci): release 走独立 compose 文件,prod 文件回滚成历史原版
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

之前的参数化(docker-compose.core.yml 用 \${VAR:-default} + .env 注入)让运维要在
两台部署机分别维护 .env,体验跟 prod 现状不一致。改回与 prod 同款:每个环境一个
独立的 compose 文件,配置直接硬编码在 yml 里。

改动:
- 新增 docker-compose.release.yml(release 专用:MySQL aiot-platform-release 库、
  Nacos namespace e635b215-...、TDengine database aiot_platform_release、
  XXL-Job executor IP=.7、appname 加 -release 后缀、RocketMQ 内网 .7:9876)
- docker-compose.core.yml 完全恢复到 master 版本(prod 文件未做任何改动)
- 删除 env/ 目录(prod.env.example / release.env.example / .gitignore 都不需要了)
- Jenkinsfile:
  - Initialize 阶段按分支选 COMPOSE_FILE:master→core.yml、release/next→release.yml
  - 所有 docker compose 命令统一用 -f \${env.COMPOSE_FILE}
  - Pre-deploy 移除 .env 文件存在性检查
  - 删除 checkRemoteEnvFileOrFail helper(不再使用)

application.yaml 里的 \${XXL_JOB_EXECUTOR_APPNAME_SUFFIX:} 与 application-prod.yaml
里的 \${TDENGINE_DATABASE:aiot_platform} 保留——默认值与历史一致,prod 行为零变化,
但给 release.yml 注入这两个变量留了入口。
This commit is contained in:
lzh
2026-04-28 17:00:24 +08:00
parent 516259b540
commit db91e9503e
6 changed files with 376 additions and 249 deletions

View File

@@ -1,11 +1,3 @@
# ============================================
# 后端核心服务 - 多环境通用 Compose
# ============================================
# 部署机调用:
# docker compose --env-file .env -f docker-compose.core.yml up -d
# 不传 --env-file 时,所有 ${VAR:-default} 落到 prod 默认值,行为与历史一致。
# 部署机的 .env 由运维手工维护,不进 git敏感凭据
# ============================================
version: '3.8'
networks:
@@ -16,42 +8,6 @@ networks:
volumes:
app-logs:
# ============================================
# 公共环境变量片段YAML anchor
# ============================================
x-common-env: &common-env
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
# ===== Nacos =====
NACOS_USERNAME: ${NACOS_USERNAME:-nacos}
NACOS_PASSWORD: ${NACOS_PASSWORD:-9oDxX~}e7DeP}
NACOS_ADDR: ${NACOS_ADDR:-172.17.16.7:8848}
NACOS_DISCOVERY_NAMESPACE: ${NACOS_DISCOVERY_NAMESPACE:-8efd6d96-de7f-4664-b28e-c2788ffa1395}
NACOS_CONFIG_NAMESPACE: ${NACOS_CONFIG_NAMESPACE:-8efd6d96-de7f-4664-b28e-c2788ffa1395}
# ===== MySQL =====
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: ${MYSQL_URL:-jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true}
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: ${MYSQL_USERNAME:-root}
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: ${MYSQL_PASSWORD:-tKi8rfUJjVrf@}
# ===== Redis =====
SPRING_DATA_REDIS_HOST: ${REDIS_HOST:-172.17.16.13}
SPRING_DATA_REDIS_PORT: ${REDIS_PORT:-6379}
SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD:-HkVZkVnn1}
# ===== RocketMQ =====
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_ADDR:-rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080}
ROCKETMQ_ACCESS_KEY: ${ROCKETMQ_ACCESS_KEY:-ak4wd73bxpv55331e7c5b80}
ROCKETMQ_SECRET_KEY: ${ROCKETMQ_SECRET_KEY:-sk82108944bc0997f7}
# ===== XXL-Job =====
# 注意XXL_JOB_EXECUTOR_APPNAME 用来区分 prod/release 在同一 admin 下的执行器组
# (后端 application.yaml 需要支持 ${XXL_JOB_EXECUTOR_APPNAME:${spring.application.name}}
XXL_JOB_ADMIN_ADDRESSES: ${XXL_JOB_ADMIN_ADDRESSES:-http://172.17.16.7:19090/xxl-job-admin}
XXL_JOB_EXECUTOR_IP: ${XXL_JOB_EXECUTOR_IP:-172.17.16.14}
XXL_JOB_EXECUTOR_APPNAME_SUFFIX: ${XXL_JOB_EXECUTOR_APPNAME_SUFFIX:-}
services:
viewsh-gateway:
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-gateway:${IMAGE_TAG:-latest}
@@ -60,8 +16,25 @@ services:
ports:
- "48080:48080"
environment:
<<: *common-env
# ===== 基础配置 =====
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: prod
# ===== JVM 配置 =====
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
# ===== Nacos 配置 =====
NACOS_USERNAME: nacos
NACOS_PASSWORD: 9oDxX~}e7DeP
NACOS_ADDR: 172.17.16.7:8848
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
# ===== Redis 配置 =====
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PORT: 6379
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1"
volumes:
- app-logs:/app/logs
deploy:
@@ -84,16 +57,37 @@ services:
- "48081:48081"
- "9901:9901"
environment:
<<: *common-env
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: prod
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
# 微信配置system-server 独有)
WX_MP_APP_ID: ${WX_MP_APP_ID:-wx5b23ba7a5589ecbb}
WX_MP_SECRET: ${WX_MP_SECRET:-2a7b3b20c537e52e74afd395eb85f61f}
WX_MINIAPP_APPID: ${WX_MINIAPP_APPID:-wxc4598c446f8a9cb3}
WX_MINIAPP_SECRET: ${WX_MINIAPP_SECRET:-4a1a04e07f6a4a0751b39c3064a92c8b}
# ===== Nacos 配置 =====
NACOS_USERNAME: nacos
NACOS_PASSWORD: 9oDxX~}e7DeP
NACOS_ADDR: 172.17.16.7:8848
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
# 数据库
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root # TODO: 填入数据库用户名
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: "tKi8rfUJjVrf@" # TODO: 填入数据库密码
# Redis
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1" # TODO: 填入 Redis 密码
# 微信配置 (解决 appid 不能为 null)
WX_MP_APP_ID: "wx5b23ba7a5589ecbb"
WX_MP_SECRET: "2a7b3b20c537e52e74afd395eb85f61f"
WX_MINIAPP_APPID: "wxc4598c446f8a9cb3"
WX_MINIAPP_SECRET: "4a1a04e07f6a4a0751b39c3064a92c8b"
# XXL-Job 调度中心地址
XXL_JOB_ADMIN_ADDRESSES: http://172.17.16.7:19090/xxl-job-admin
XXL_JOB_EXECUTOR_IP: 172.17.16.14
XXL_JOB_EXECUTOR_PORT: 9901
volumes:
- app-logs:/app/logs
deploy:
@@ -119,9 +113,28 @@ services:
- "48082:48082"
- "9902:9902"
environment:
<<: *common-env
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: prod
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
NACOS_USERNAME: nacos
NACOS_PASSWORD: 9oDxX~}e7DeP
NACOS_ADDR: 172.17.16.7:8848
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: "tKi8rfUJjVrf@"
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1"
# XXL-Job 调度中心地址
XXL_JOB_ADMIN_ADDRESSES: http://172.17.16.7:19090/xxl-job-admin
XXL_JOB_EXECUTOR_IP: 172.17.16.14
XXL_JOB_EXECUTOR_PORT: 9902
volumes:
- app-logs:/app/logs
healthcheck:
@@ -142,24 +155,38 @@ services:
- "48091:48091"
- "9903:9903"
environment:
<<: *common-env
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: prod
JAVA_OPTS: "-Xms1024m -Xmx2048m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
# ===== 时序库iot-server 独有)=====
# prod 用 TDengine172.17.16.7:6041release 用腾讯云 CTSDBInfluxDB 兼容)
# 通过 TSDB_TYPE 切换tdengine | ctsdb
TSDB_TYPE: ${TSDB_TYPE:-tdengine}
TDENGINE_HOST: ${TDENGINE_HOST:-172.17.16.7}
TDENGINE_PORT: ${TDENGINE_PORT:-6041}
TDENGINE_USERNAME: ${TDENGINE_USERNAME:-root}
TDENGINE_PASSWORD: ${TDENGINE_PASSWORD:-taosdata}
TDENGINE_DATABASE: ${TDENGINE_DATABASE:-aiot_platform}
CTSDB_URL: ${CTSDB_URL:-}
CTSDB_USERNAME: ${CTSDB_USERNAME:-}
CTSDB_PASSWORD: ${CTSDB_PASSWORD:-}
CTSDB_DATABASE: ${CTSDB_DATABASE:-}
NACOS_USERNAME: nacos
NACOS_PASSWORD: 9oDxX~}e7DeP
NACOS_ADDR: 172.17.16.7:8848
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: "tKi8rfUJjVrf@"
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1"
ROCKETMQ_NAMESRV_ADDR: rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080
ROCKETMQ_ACCESS_KEY: ak4wd73bxpv55331e7c5b80
ROCKETMQ_SECRET_KEY: sk82108944bc0997f7
# TDengine
TDENGINE_HOST: 172.17.16.7
TDENGINE_PORT: 6041
TDENGINE_USERNAME: root
TDENGINE_PASSWORD: taosdata
# XXL-Job 调度中心地址
XXL_JOB_ADMIN_ADDRESSES: http://172.17.16.7:19090/xxl-job-admin
XXL_JOB_EXECUTOR_IP: 172.17.16.14
XXL_JOB_EXECUTOR_PORT: 9903
volumes:
- app-logs:/app/logs
deploy:
@@ -188,17 +215,15 @@ services:
environment:
IOT_TCP_ENABLED: "true"
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
SPRING_PROFILES_ACTIVE: prod
JAVA_OPTS: "-Xms1024m -Xmx2048m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
SPRING_DATA_REDIS_HOST: ${REDIS_HOST:-172.17.16.13}
SPRING_DATA_REDIS_PORT: ${REDIS_PORT:-6379}
SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD:-HkVZkVnn1}
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_ADDR:-rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080}
ROCKETMQ_ACCESS_KEY: ${ROCKETMQ_ACCESS_KEY:-ak4wd73bxpv55331e7c5b80}
ROCKETMQ_SECRET_KEY: ${ROCKETMQ_SECRET_KEY:-sk82108944bc0997f7}
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1"
ROCKETMQ_NAMESRV_ADDR: rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080
ROCKETMQ_ACCESS_KEY: ak4wd73bxpv55331e7c5b80
ROCKETMQ_SECRET_KEY: sk82108944bc0997f7
VIEWSH_IOT_GATEWAY_RPC_URL: "http://aiot-iot-server:48091"
volumes:
- app-logs:/app/logs
@@ -218,9 +243,32 @@ services:
- "48092:48092"
- "9904:9904"
environment:
<<: *common-env
TZ: Asia/Shanghai
SPRING_PROFILES_ACTIVE: prod
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
NACOS_USERNAME: nacos
NACOS_PASSWORD: 9oDxX~}e7DeP
NACOS_ADDR: 172.17.16.7:8848
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: "tKi8rfUJjVrf@"
SPRING_DATA_REDIS_HOST: 172.17.16.13
SPRING_DATA_REDIS_PASSWORD: "HkVZkVnn1"
ROCKETMQ_NAMESRV_ADDR: rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080
ROCKETMQ_ACCESS_KEY: ak4wd73bxpv55331e7c5b80
ROCKETMQ_SECRET_KEY: sk82108944bc0997f7
# XXL-Job 调度中心地址
XXL_JOB_ADMIN_ADDRESSES: http://172.17.16.7:19090/xxl-job-admin
XXL_JOB_EXECUTOR_IP: 172.17.16.14
XXL_JOB_EXECUTOR_PORT: 9904
volumes:
- app-logs:/app/logs
healthcheck: