#!/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"