This commit is contained in:
caoyuchun 2026-01-16 14:08:09 +08:00
parent d666cd611e
commit fb3f49ec6b

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Docker 部署脚本 - 在远程服务器上执行 # Docker/Podman 部署脚本 - 在远程服务器上执行
# 用法: ./deploy-docker.sh <部署目录> # 用法: ./deploy-docker.sh <部署目录>
set -e set -e
@ -8,7 +8,7 @@ set -e
DEPLOY_DIR=${1:-/opt/nginx/html/ai/current} DEPLOY_DIR=${1:-/opt/nginx/html/ai/current}
DOCKER_DIR="$DEPLOY_DIR/docker" DOCKER_DIR="$DEPLOY_DIR/docker"
echo "开始 Docker 部署到: $DEPLOY_DIR" echo "开始容器部署到: $DEPLOY_DIR"
# 检查部署目录是否存在 # 检查部署目录是否存在
if [ ! -d "$DEPLOY_DIR" ]; then if [ ! -d "$DEPLOY_DIR" ]; then
@ -16,22 +16,46 @@ if [ ! -d "$DEPLOY_DIR" ]; then
exit 1 exit 1
fi fi
# 检查 Docker 是否安装 # 检测容器运行时(优先使用 Podman然后是 Docker
if ! command -v docker &> /dev/null; then CONTAINER_CMD=""
echo "错误: Docker 未安装" COMPOSE_CMD=""
if command -v podman &> /dev/null; then
CONTAINER_CMD="podman"
echo "检测到 Podman"
# 检查 podman-compose 或 podman compose
if command -v podman-compose &> /dev/null; then
COMPOSE_CMD="podman-compose"
elif podman compose version &> /dev/null 2>&1; then
COMPOSE_CMD="podman compose"
else
echo "错误: podman-compose 未安装"
echo "提示: 请安装 podman-compose 或 podman-compose 插件"
echo "安装方法: pip install podman-compose 或 dnf install podman-compose"
exit 1
fi
elif command -v docker &> /dev/null; then
CONTAINER_CMD="docker"
echo "检测到 Docker"
# 检查 docker-compose 或 docker compose
if command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker-compose"
elif docker compose version &> /dev/null 2>&1; then
COMPOSE_CMD="docker compose"
else
echo "错误: docker-compose 未安装"
echo "提示: 请安装 docker-compose 或确保 Docker 版本 >= 20.10"
exit 1
fi
else
echo "错误: 未找到 Podman 或 Docker"
exit 1 exit 1
fi fi
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then echo "使用容器命令: $CONTAINER_CMD"
echo "错误: docker-compose 未安装" echo "使用 Compose 命令: $COMPOSE_CMD"
exit 1
fi
# 检查 docker-compose 命令(支持新版本的 docker compose
COMPOSE_CMD="docker-compose"
if ! command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker compose"
fi
# 进入 Docker 目录 # 进入 Docker 目录
if [ ! -d "$DOCKER_DIR" ]; then if [ ! -d "$DOCKER_DIR" ]; then
@ -46,7 +70,7 @@ echo "停止旧容器..."
$COMPOSE_CMD down || true $COMPOSE_CMD down || true
# 构建并启动服务 # 构建并启动服务
echo "构建并启动 Docker 服务..." echo "构建并启动容器服务..."
$COMPOSE_CMD up -d --build $COMPOSE_CMD up -d --build
# 等待服务启动 # 等待服务启动
@ -59,14 +83,14 @@ $COMPOSE_CMD ps
# 检查容器健康状态 # 检查容器健康状态
echo "检查容器健康状态..." echo "检查容器健康状态..."
if docker ps | grep -q ai-learning-nginx; then if $CONTAINER_CMD ps | grep -q ai-learning-nginx; then
echo "✅ Nginx 容器运行中" echo "✅ Nginx 容器运行中"
else else
echo "❌ Nginx 容器未运行" echo "❌ Nginx 容器未运行"
exit 1 exit 1
fi fi
if docker ps | grep -q ai-learning-backend; then if $CONTAINER_CMD ps | grep -q ai-learning-backend; then
echo "✅ Backend 容器运行中" echo "✅ Backend 容器运行中"
else else
echo "❌ Backend 容器未运行" echo "❌ Backend 容器未运行"
@ -75,7 +99,7 @@ fi
echo "" echo ""
echo "==========================================" echo "=========================================="
echo "Docker 部署完成!" echo "容器部署完成!"
echo "==========================================" echo "=========================================="
echo "前端访问: http://180.76.180.105:8080" echo "前端访问: http://180.76.180.105:8080"
echo "后端 API: http://180.76.180.105:3001" echo "后端 API: http://180.76.180.105:3001"