41 lines
1.6 KiB
Bash
41 lines
1.6 KiB
Bash
|
|
#!/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"
|