chore: 增加 Docker 单容器部署

生产用 Dockerfile + compose 嵌入前端二进制,run.sh docker 一键构建启动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-12 12:02:29 +08:00
1 parent 95405de119
commit cb1a9be2c4
7 files changed
+224 -4

No files matched your search

+62 -1
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# opsx-licence 启动脚本
# 一键启动前后端服务,支持日志轮转与单二进制部署
# 用法: ./run.sh [start|stop|restart|status|frontend|backend|build|binary|help]
# 用法: ./run.sh [start|stop|restart|status|frontend|backend|build|binary|docker|help]
set -e
@@ -282,6 +282,62 @@ binary_command() {
esac
}
# ============================================================
# Docker 部署(生产推荐)
# ============================================================
compose_cmd() {
if docker compose version >/dev/null 2>&1; then
echo "docker compose"
elif command -v docker-compose >/dev/null 2>&1; then
echo "docker-compose"
else
error "未找到 docker compose / docker-compose"
return 1
fi
}
docker_command() {
local sub=${1:-up}
local dc
dc=$(compose_cmd) || return 1
if [ ! -f "$SCRIPT_DIR/.env" ]; then
warning "缺少 .env,正在从 .env.example 复制"
cp "$SCRIPT_DIR/.env.example" "$SCRIPT_DIR/.env"
warning "请编辑 .env 修改 JWT_SECRET / Waffo 配置后再部署"
fi
case "$sub" in
up|start)
info "Docker 构建并启动..."
$dc -f "$SCRIPT_DIR/docker-compose.yml" up -d --build
success "容器已启动: http://localhost:${HOST_PORT:-9001}"
;;
down|stop)
info "停止 Docker 容器..."
$dc -f "$SCRIPT_DIR/docker-compose.yml" down
;;
restart)
$dc -f "$SCRIPT_DIR/docker-compose.yml" restart
;;
rebuild|upgrade)
info "重新构建并滚动升级..."
$dc -f "$SCRIPT_DIR/docker-compose.yml" up -d --build --force-recreate
;;
logs)
$dc -f "$SCRIPT_DIR/docker-compose.yml" logs -f --tail=200
;;
status|ps)
$dc -f "$SCRIPT_DIR/docker-compose.yml" ps
;;
*)
error "未知 docker 命令: $sub"
echo "用法: ./run.sh docker [up|down|restart|rebuild|logs|status]"
return 1
;;
esac
}
# ============================================================
# 命令
# ============================================================
@@ -320,6 +376,7 @@ show_help() {
echo " frontend 仅启动前端服务"
echo " build 构建嵌入前端的单二进制 $STANDALONE_BIN"
echo " binary 管理单二进制服务(start|stop|restart|status|upgrade)"
echo " docker Docker 部署(up|down|restart|rebuild|logs|status)"
echo " status 查看服务状态"
echo " help 显示帮助信息"
echo ""
@@ -330,6 +387,7 @@ show_help() {
echo " ./run.sh backend # 仅启动后端"
echo " ./run.sh build # 生成 ./opsx-licence"
echo " ./run.sh binary start # 启动单二进制服务"
echo " ./run.sh docker up # Docker 构建并启动(生产推荐)"
}
# ============================================================
@@ -389,6 +447,9 @@ main() {
binary)
binary_command "${2:-start}"
;;
docker)
docker_command "${2:-up}"
;;
status)
show_status
;;