|
|
há 1 semana | |
|---|---|---|
| .. | ||
| dockerfiles | há 3 semanas | |
| nginx | há 3 semanas | |
| profiles | há 1 semana | |
| test | há 2 semanas | |
| .env.example | há 2 semanas | |
| README.md | há 1 semana | |
| apply-update.sh | há 1 semana | |
| build-package.ps1 | há 1 semana | |
| build-package.sh | há 1 semana | |
| build-update.sh | há 1 semana | |
| deploy-from-url.sh | há 1 semana | |
| docker-compose.runtime.yml | há 3 semanas | |
| install.sh | há 1 semana | |
| publish-cos.sh | há 1 semana | |
| update.MD | há 1 semana | |
本目录用于在打包/测试服务器构建 Docker 镜像包,上传到腾讯云 COS,然后在甲方服务器通过包 URL 下载并部署。
默认环境为 emp-test,用于兼容原有流程;UAT 环境使用 DEPLOY_ENV=emp-uat。emp-test 和 emp-uat 都有独立环境变量模板,并共用一份运行用 compose 模板。
build-package.sh Linux / WSL 全量打包脚本
build-package.ps1 Windows PowerShell 全量打包脚本
build-update.sh 增量打包脚本
publish-cos.sh 上传 COS 并输出签名 URL
deploy-from-url.sh 甲方服务器按 URL 下载并部署
install.sh 甲方服务器全量安装脚本
apply-update.sh 甲方服务器增量更新脚本
profiles/docker-compose.yml emp-test / emp-uat 共用运行模板
profiles/emp-test/.env.example
profiles/emp-uat/.env.example
docker-compose.runtime.yml 旧默认运行模板,保留兼容
打包时 compose 选择顺序为:
profiles/<DEPLOY_ENV>/docker-compose.yml
-> profiles/docker-compose.yml
-> docker-compose.runtime.yml
-> test/docker-compose.yml
正常情况下,emp-test 和 emp-uat 都使用 profiles/docker-compose.yml,差异只来自各自的 .env.example。
打包服务器启用 COS_UPLOAD=1 前,需要设置:
export COS_SECRET_ID=change-me
export COS_SECRET_KEY=change-me
export COS_REGION=ap-chengdu
export COS_BUCKET=emp-example-bucket
可选配置:
export COS_SIGN_EXPIRE=604800
export COS_PREFIX=deploy/emp-uat/runtime/custom
export COS_CONFIG_PATH=/path/to/.cos.yaml
publish-cos.sh 使用腾讯云 coscli cp 上传包,并用 coscli signurl 生成临时下载 URL。打包服务器需要提前安装 coscli。
cd /home/git/emp_test_deploy/isolated
DEPLOY_ENV=emp-uat \
COS_UPLOAD=1 \
EMP_ROOT=/home/git/emp \
./build-package.sh
其中 /home/git/emp_test_deploy/isolated 是部署脚本目录,EMP_ROOT=/home/git/emp 是业务代码根目录。
Windows PowerShell:
cd E:\emp\deploy\isolated
.\build-package.ps1 -DeployEnv emp-uat -CosUpload
输出示例:
Package: .../dist/emp-uat-runtime-20260611120000.tar.gz
COS Key: deploy/emp-uat/runtime/20260611120000/emp-uat-runtime-20260611120000.tar.gz
SHA256: ...
URL: https://...
先将 deploy-from-url.sh 放到甲方服务器。之后执行:
DEPLOY_ENV=emp-uat \
DEPLOY_HOME=/home/admin-x99/emp-uat \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<打包输出的URL>"
脚本会将包下载到:
/home/admin-x99/emp-uat/packages/<时间戳>/
然后把运行文件复制到:
/home/admin-x99/emp-uat/runtime/
并执行 install.sh。
如果目标目录下还没有 .env,install.sh 会先从 .env.example 生成 .env 并停止。修改密码、PUBLIC_HOST、端口和第三方配置后,再执行:
cd /home/admin-x99/emp-uat/runtime
DEPLOY_ENV=emp-uat bash install.sh
同一台甲方服务器可以同时部署两套环境。两套环境使用不同 DEPLOY_ENV、DEPLOY_HOME、compose project 和宿主机端口。
profiles/docker-compose.yml 中网关、PDF、Nacos、Redis 默认只在 Docker 内网访问;前端 Nginx 容器会在 Docker 内网代理 /api/ 和 /socket.io/。
| 环境 | 部署目录 | Compose 项目名 | 前端 | WS | MySQL | 本地 Kafka 可选 | TDengine REST |
|---|---|---|---|---|---|---|---|
| emp-test | /home/admin-x99/emp-test |
emp-test |
4750 | 4751 | 4752 | 4753 | 4754 |
| emp-uat | /home/admin-x99/emp-uat |
emp-uat |
4755 | 4756 | 4757 | 4758 | 4759 |
4760 预留备用。当前公共 compose 模板不对外暴露 Gateway、PDF、Nacos、Redis、TDengine RPC;如需额外暴露,再使用 4760 或向甲方申请新端口。
甲方服务器系统重装后,emp-test 和 emp-uat 都按全量部署重新执行一次;不要只打增量包。
Kafka 当前配置:
emp-test 模拟器推送:ip-cld.cn:29362 / test-vehicle-real-data。emp-test 后端消费:ip-cld.cn:29362 / YuanJing-test-vehicle-mock-data。emp-uat 模拟器推送:ip-cld.cn:29362 / uat-vehicle-real-data。emp-uat 后端消费:ip-cld.cn:29362 / YuanJing-uat-vehicle-mock-data。内部 Kafka 镜像仍会打进离线包,但 profiles/docker-compose.yml 默认不启动 Kafka。需要本地联调内部 Kafka 时,再显式启用 compose profile:COMPOSE_PROFILES=local-kafka。
部署 test:
DEPLOY_ENV=emp-test \
DEPLOY_HOME=/home/admin-x99/emp-test \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<emp-test包URL>"
部署 uat:
DEPLOY_ENV=emp-uat \
DEPLOY_HOME=/home/admin-x99/emp-uat \
PACKAGE_SHA256=<打包输出的SHA256> \
bash deploy-from-url.sh "<emp-uat包URL>"
Docker compose 会按项目名隔离容器、网络和数据卷,所以只要 PROJECT_NAME 不同,emp-test 和 emp-uat 的数据卷不会互相覆盖。
cd /home/admin-x99/emp-uat/runtime
docker compose --env-file .env -f docker-compose.yml -p emp-uat ps
docker compose --env-file .env -f docker-compose.yml -p emp-uat logs -f emp-gateway
docker compose --env-file .env -f docker-compose.yml -p emp-uat down
查看 test 时把目录和项目名改为 emp-test:
cd /home/admin-x99/emp-test/runtime
docker compose --env-file .env -f docker-compose.yml -p emp-test ps
如果 COS 不可用,仍然可以通过其他方式把 dist/ 下的包传到甲方服务器。全量包手工部署示例:
mkdir -p /home/admin-x99/emp-uat/runtime
tar -xzf emp-uat-runtime-*.tar.gz -C /home/admin-x99/emp-uat/runtime --strip-components=1
cd /home/admin-x99/emp-uat/runtime
DEPLOY_ENV=emp-uat bash install.sh