65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/bin/bash
|
|
# 生产环境更新脚本
|
|
# 用途:拉取最新镜像并重启服务
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# 检查参数
|
|
IMAGE_TAG=${1:-latest}
|
|
if [ -z "$IMAGE_TAG" ]; then
|
|
echo "用法: $0 [IMAGE_TAG]"
|
|
echo "示例: $0 latest"
|
|
echo "示例: $0 v1.0.0"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== 更新生产服务 ==="
|
|
echo "镜像标签: $IMAGE_TAG"
|
|
echo ""
|
|
|
|
# 检查 .env.prod 文件
|
|
if [ ! -f ".env.prod" ]; then
|
|
echo "错误: 未找到 .env.prod 文件"
|
|
exit 1
|
|
fi
|
|
|
|
# 设置镜像标签
|
|
export IMAGE_TAG
|
|
|
|
# 登录到容器镜像仓库(如果需要)
|
|
# docker login ghcr.io -u $GITHUB_USERNAME -p $GITHUB_TOKEN
|
|
|
|
# 拉取最新镜像
|
|
echo "[1/3] 拉取最新镜像..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod pull
|
|
|
|
# 停止旧服务
|
|
echo ""
|
|
echo "[2/3] 停止旧服务..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod down
|
|
|
|
# 启动新服务
|
|
echo ""
|
|
echo "[3/3] 启动新服务..."
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
|
|
|
echo ""
|
|
echo "等待服务启动..."
|
|
sleep 5
|
|
|
|
# 检查服务状态
|
|
echo ""
|
|
echo "服务状态:"
|
|
docker-compose -f docker-compose.prod.yml ps
|
|
|
|
echo ""
|
|
echo "=== 更新完成 ==="
|
|
echo ""
|
|
echo "查看日志: docker-compose -f docker-compose.prod.yml logs -f"
|
|
echo "检查健康: curl http://localhost/api/health"
|