Files
meijiaka-zy/python-api/deploy-test.sh
T
小鱼开发 773065536c refactor: 统一项目命名为 meijiaka-zy / 美家卡智影
- 中文产品名统一为 美家卡智影
- 代码目录/容器名/数据卷: meijiaka-zy
- 本地存储路径: Meijiaka-zy
- 数据库名: meijiaka_zy
- 七牛云资源前缀: meijiaka-zy
- 部署脚本指向新仓库 meijiaka-zy.git
2026-04-26 23:02:05 +08:00

130 lines
3.8 KiB
Bash

#!/bin/bash
# 美家卡智影 - 测试服一键部署脚本
# ================================
# 用法:
# chmod +x deploy-test.sh
# ./deploy-test.sh
set -e
echo "========================================"
echo " 美家卡智影 - 测试服部署"
echo "========================================"
# 配置
PROJECT_DIR="/opt/meijiaka-zy"
GIT_REPO="http://git2.haodian.cn/xiaoyu/meijiaka-zy.git"
API_PORT=8081
# 1. 检查 Docker
echo "[1/6] 检查 Docker 环境..."
if ! command -v docker &> /dev/null; then
echo "Docker 未安装,请先安装 Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
echo "Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
echo "Docker 版本: $(docker --version)"
docker compose version || echo "docker-compose 版本: $(docker-compose --version)"
# 2. 克隆/更新代码
echo "[2/6] 更新代码..."
if [ -d "$PROJECT_DIR/.git" ]; then
cd "$PROJECT_DIR"
git pull origin master
else
git clone "$GIT_REPO" "$PROJECT_DIR"
cd "$PROJECT_DIR"
fi
# 3. 创建数据目录
echo "[3/6] 创建数据目录..."
mkdir -p /opt/meijiaka-zy/data/{postgres,redis,logs}
chmod 755 /opt/meijiaka-zy/data
# 4. 检查环境变量
echo "[4/7] 检查环境变量..."
cd "$PROJECT_DIR/python-api"
if [ ! -f ".env" ]; then
echo "⚠️ .env 文件不存在,从 .env.example 复制..."
if [ -f ".env.example" ]; then
cp .env.example .env
echo "⚠️ 请编辑 .env 文件,填入实际的 API Key 后再重新运行此脚本"
echo " vim $PROJECT_DIR/python-api/.env"
exit 1
else
echo "❌ .env.example 也不存在,请手动创建 .env 文件"
exit 1
fi
fi
# 检查关键环境变量
MISSING_VARS=()
for var in VOLCENGINE_API_KEY KLINGAI_ACCESS_KEY KLINGAI_SECRET_KEY; do
if ! grep -q "^$var=" .env || grep -q "^$var=\$" .env; then
MISSING_VARS+=($var)
fi
done
if [ ${#MISSING_VARS[@]} -gt 0 ]; then
echo "⚠️ .env 中缺少以下关键环境变量:"
for var in "${MISSING_VARS[@]}"; do
echo " - $var"
done
echo " 请编辑 .env 文件填入后再部署"
exit 1
fi
echo "✅ 环境变量检查通过"
# 5. 构建镜像
echo "[5/7] 构建 Docker 镜像..."
docker compose -f docker-compose.test.yml build --no-cache
# 6. 启动服务
echo "[6/7] 启动服务..."
docker compose -f docker-compose.test.yml down 2>/dev/null || true
docker compose -f docker-compose.test.yml up -d
# 7. 等待并验证
echo "[7/7] 等待服务启动..."
sleep 5
MAX_RETRY=12
RETRY=0
while [ $RETRY -lt $MAX_RETRY ]; do
if curl -s http://localhost:$API_PORT/health | grep -q "healthy"; then
echo ""
echo "========================================"
echo " ✅ 测试服部署成功!"
echo "========================================"
echo " API 地址: http://<服务器IP>:$API_PORT"
echo " 健康检查: http://<服务器IP>:$API_PORT/health"
echo " API 文档: http://<服务器IP>:$API_PORT/docs"
echo " 数据库: localhost:5432 (meijiaka_zy)"
echo " Redis: localhost:6379 (db 0)"
echo ""
echo " 查看日志:"
echo " docker logs -f meijiaka-zy-api"
echo " docker logs -f meijiaka-zy-scheduler"
echo ""
echo " 常用命令:"
echo " cd $PROJECT_DIR/python-api"
echo " docker compose -f docker-compose.test.yml logs -f"
echo " docker compose -f docker-compose.test.yml restart api"
echo "========================================"
exit 0
fi
RETRY=$((RETRY + 1))
echo " 等待服务就绪... ($RETRY/$MAX_RETRY)"
sleep 3
done
echo "❌ 服务启动超时,请检查日志:"
echo " docker logs meijiaka-zy-api"
exit 1