增量包用于只更新指定应用服务镜像,不包含 MySQL、Redis、Kafka、TDengine、Nacos 等中间件镜像。
默认环境为 emp-test;UAT 环境使用 DEPLOY_ENV=emp-uat。
甲方服务器系统重装后,emp-test 和 emp-uat 都需要先重新执行全量部署;全量部署完成并确认 runtime/.env、runtime/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 |
| emp-pdf | ${IMAGE_NAMESPACE}/emp-pdf |
|
| ws | emp-ws | ${IMAGE_NAMESPACE}/emp-ws |
| admin | emp-admin | ${IMAGE_NAMESPACE}/emp-admin |
打包服务器先设置 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_admin、emp_server、emp_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
先确认目标环境已完成全量部署,并存在:
/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,并自动使用运行目录中的 .env 和 docker-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
latest 和时间戳两个镜像 tag。.env 建议保持 IMAGE_TAG=latest,除非确定所有服务都已经按同一个时间戳 tag 部署。docker-compose.yml、.env.example 或中间件初始化逻辑,建议重新打全量包,或单独同步运行配置。emp-test 和 emp-uat 时,更新命令里的 DEPLOY_ENV、DEPLOY_HOME、包 URL 必须匹配同一个环境。