Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

4.8 KiB

EMP 隔离环境增量更新说明

增量包用于只更新指定应用服务镜像,不包含 MySQL、Redis、Kafka、TDengine、Nacos 等中间件镜像。

默认环境为 emp-test;UAT 环境使用 DEPLOY_ENV=emp-uat

甲方服务器系统重装后,emp-testemp-uat 都需要先重新执行全量部署;全量部署完成并确认 runtime/.envruntime/docker-compose.yml 存在后,后续版本再使用增量更新。

Kafka 配置应保持为:

  • emp-test 模拟器推送 ip-cld.cn:29362 / test-vehicle-real-data,后端消费 ip-cld.cn:29362 / YuanJing-test-vehicle-mock-data
  • emp-uat 模拟器推送 ip-cld.cn:29362 / uat-vehicle-real-data,后端消费 ip-cld.cn:29362 / YuanJing-uat-vehicle-mock-data

内部 Kafka 镜像仍会打进离线包,但默认不启动、不参与业务链路。

支持更新的服务

简写 Compose 服务名 镜像
gateway emp-gateway ${IMAGE_NAMESPACE}/emp-gateway
auth emp-auth ${IMAGE_NAMESPACE}/emp-auth
monitor emp-monitor ${IMAGE_NAMESPACE}/emp-monitor
data emp-data ${IMAGE_NAMESPACE}/emp-data
pdf emp-pdf ${IMAGE_NAMESPACE}/emp-pdf
ws emp-ws ${IMAGE_NAMESPACE}/emp-ws
admin emp-admin ${IMAGE_NAMESPACE}/emp-admin

构建并上传 UAT 增量包

打包服务器先设置 COS 配置:

export COS_SECRET_ID=change-me
export COS_SECRET_KEY=change-me
export COS_REGION=ap-chengdu
export COS_BUCKET=emp-example-bucket

构建指定服务,上传 COS,并输出签名 URL:

cd /home/git/emp_test_deploy/isolated

DEPLOY_ENV=emp-uat \
COS_UPLOAD=1 \
EMP_ROOT=/home/git \
./build-update.sh admin monitor

其中 /home/git/emp_test_deploy/isolated 是部署脚本目录,EMP_ROOT=/home/git 是业务代码根目录,下面直接包含 emp_adminemp_serveremp_ws

输出示例:

Package: .../dist/emp-uat-update-20260611123000-admin-monitor.tar.gz
COS Key: deploy/emp-uat/update/20260611123000/emp-uat-update-20260611123000-admin-monitor.tar.gz
SHA256: ...
URL: https://...

如果本机镜像已经构建好,只需要重新打包并上传:

DEPLOY_ENV=emp-uat \
COS_UPLOAD=1 \
SKIP_BUILD=1 \
EMP_ROOT=/home/git \
./build-update.sh admin monitor

甲方服务器按 URL 应用增量包

先确认目标环境已完成全量部署,并存在:

/home/admin-x99/emp/emp-uat/runtime/.env
/home/admin-x99/emp/emp-uat/runtime/docker-compose.yml

执行:

DEPLOY_ENV=emp-uat \
DEPLOY_HOME=/home/admin-x99/emp/emp-uat \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<打包输出的URL>"

同一台服务器上更新不同环境时,必须使用对应环境参数:

# 更新 test
DEPLOY_ENV=emp-test \
DEPLOY_HOME=/home/admin-x99/emp/emp-test \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<emp-test增量包URL>"

# 更新 uat
DEPLOY_ENV=emp-uat \
DEPLOY_HOME=/home/admin-x99/emp/emp-uat \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<emp-uat增量包URL>"

deploy-from-url.sh 会将包下载到:

$DEPLOY_HOME/packages/<时间戳>/

然后调用包内的 apply-update.sh,并自动使用运行目录中的 .envdocker-compose.yml

手工应用增量包

如果已经手工解压增量包,可以在解压目录执行:

cd /tmp/emp-update

DEPLOY_ENV=emp-uat \
DEPLOY_HOME=/home/admin-x99/emp/emp-uat \
ENV_FILE=/home/admin-x99/emp/emp-uat/runtime/.env \
COMPOSE_FILE=/home/admin-x99/emp/emp-uat/runtime/docker-compose.yml \
bash apply-update.sh emp-admin emp-monitor

如果不传服务名,apply-update.sh 会读取增量包内的 services.txt

验证

查看 UAT 服务状态:

cd /home/admin-x99/emp/emp-uat/runtime
docker compose --env-file .env -f docker-compose.yml -p emp-uat ps emp-admin emp-monitor

查看日志:

docker compose --env-file .env -f docker-compose.yml -p emp-uat logs --tail=100 emp-monitor

查看 test 时把目录和项目名改为 emp-test

cd /home/admin-x99/emp/emp-test/runtime
docker compose --env-file .env -f docker-compose.yml -p emp-test ps emp-admin emp-monitor

注意事项

  1. 增量包默认同时包含 latest 和时间戳两个镜像 tag。
  2. 目标服务器 .env 建议保持 IMAGE_TAG=latest,除非确定所有服务都已经按同一个时间戳 tag 部署。
  3. 如果修改了 docker-compose.yml.env.example 或中间件初始化逻辑,建议重新打全量包,或单独同步运行配置。
  4. 数据库结构变更不包含在镜像增量包中,需要单独执行 SQL 迁移。
  5. 同一台服务器同时部署 emp-testemp-uat 时,更新命令里的 DEPLOY_ENVDEPLOY_HOME、包 URL 必须匹配同一个环境。