57 lines
1.9 KiB
Bash
57 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
||
# Docker 开发与部署:支持仅更新变动内容、动态加载,避免每次全量重建
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
cd "${SCRIPT_DIR}"
|
||
|
||
COMPOSE_BASE="docker compose -f docker-compose.yml"
|
||
# dev 直接使用独立 compose 文件,避免与生产 compose 合并导致 ports/镜像覆盖问题
|
||
COMPOSE_DEV="docker compose -f docker-compose.dev.yml"
|
||
|
||
usage() {
|
||
echo "用法: $0 [mode]"
|
||
echo ""
|
||
echo " (无参数) 默认构建并启动(生产模式:前端为静态 SPA + Nginx,后端 FastAPI)"
|
||
echo " dev 开发模式:容器内 Vite 热重载,前端 http://localhost:3001(Ctrl+C 停容器)"
|
||
echo " dev-bg 开发模式后台运行,前端 http://localhost:3001,停止用: $0 down"
|
||
echo " restart 仅重启容器内服务,不重建镜像"
|
||
echo " build 仅重新构建镜像(依赖未变时只重建代码层,较快)"
|
||
echo " down 停止并移除容器"
|
||
exit 0
|
||
}
|
||
|
||
case "${1:-up}" in
|
||
up|"")
|
||
echo "[Ops-Core] 构建并启动(生产模式:静态 SPA + API)..."
|
||
${COMPOSE_BASE} up --build
|
||
;;
|
||
dev)
|
||
echo "[Ops-Core] 开发模式:容器内 Vite 热重载,前端 http://localhost:3001(Ctrl+C 停止)..."
|
||
${COMPOSE_DEV} up --build
|
||
;;
|
||
dev-bg)
|
||
echo "[Ops-Core] 开发模式(后台):同上,但 Ctrl+C 不会停容器,需用 ./docker_dev.sh down 停止..."
|
||
${COMPOSE_DEV} up --build -d
|
||
;;
|
||
restart)
|
||
echo "[Ops-Core] 仅重启服务(不重建镜像)..."
|
||
${COMPOSE_BASE} restart backend frontend
|
||
;;
|
||
build)
|
||
echo "[Ops-Core] 仅构建镜像(变更少时只重建代码层)..."
|
||
${COMPOSE_BASE} build
|
||
;;
|
||
down)
|
||
${COMPOSE_BASE} down
|
||
${COMPOSE_DEV} down 2>/dev/null || true
|
||
;;
|
||
-h|--help)
|
||
usage
|
||
;;
|
||
*)
|
||
echo "未知参数: $1"
|
||
usage
|
||
;;
|
||
esac
|