tradingSystem/scripts/deploy.sh

41 lines
1.6 KiB
Bash
Raw Normal View History

2026-07-29 12:15:28 +08:00
#!/usr/bin/env bash
# tradingSystem (PMS) 一键部署
# ---------------------------------------------------------------------------
# 为什么需要它: 源码是**打进镜像**的 (docker-compose.yml 只挂了 ./logs), 所以
# `docker compose restart` 只是把老容器停了再起, 跑的还是旧镜像里的旧代码 ——
# 改完代码 restart 一下看不到变化, 而且**一点报错都没有**, 排查时极其误导。
# 代码改动要生效必须 build + force-recreate, 这个脚本就是干这个的。
#
# 用法:
# ./scripts/deploy.sh 拉代码 → 重建镜像 → 重建服务 → 报状态
# ./scripts/deploy.sh --no-pull 跳过 git pull (本地已改好, 不想拉远端)
# PROFILES="--profile ws" ./scripts/deploy.sh 只跑页面 + ws (默认 sched+ws)
# ---------------------------------------------------------------------------
set -euo pipefail
cd "$(dirname "$0")/.."
PROFILES="${PROFILES:---profile sched --profile ws}"
DC=(docker compose $PROFILES)
if [[ "${1:-}" != "--no-pull" ]]; then
echo "==> git pull"
git pull --ff-only
fi
echo "==> 重建镜像"
"${DC[@]}" build
echo "==> 重建容器 (force-recreate: 让新镜像真正生效)"
"${DC[@]}" up -d --force-recreate
echo
"${DC[@]}" ps
echo
echo "==> 建表/补表 (幂等)"
docker compose run --rm --no-deps pms-web python scripts/init_db.py --yes || {
echo "建表失败 —— 上面有原因, 服务已经起来了, 修完重跑本脚本即可"; exit 1; }
echo
echo "完成。ws 通道状态:"
echo " docker compose run --rm --no-deps pms-web python scripts/ws_smoke.py status"