#!/bin/bash # Flask提示词大师部署脚本 # 用于生产环境部署 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查环境变量 check_env() { log_info "检查环境变量..." required_vars=( "SECRET_KEY" "DATABASE_URL" "LLM_API_KEY" "WX_APPID" "WX_SECRET" ) for var in "${required_vars[@]}"; do if [ -z "${!var}" ]; then log_error "环境变量 $var 未设置" exit 1 fi done log_info "环境变量检查通过" } # 安装依赖 install_dependencies() { log_info "安装Python依赖..." pip install -r requirements.txt log_info "依赖安装完成" } # 数据库迁移 run_migrations() { log_info "运行数据库迁移..." export FLASK_ENV=production flask db upgrade log_info "数据库迁移完成" } # 构建Docker镜像 build_docker() { log_info "构建Docker镜像..." docker build -t flask-prompt-master . log_info "Docker镜像构建完成" } # 启动Docker服务 start_docker() { log_info "启动Docker服务..." docker-compose up -d log_info "Docker服务启动完成" } # 健康检查 health_check() { log_info "执行健康检查..." # 等待服务启动 sleep 10 # 检查应用健康状态 if curl -f http://localhost/health > /dev/null 2>&1; then log_info "应用健康检查通过" else log_error "应用健康检查失败" exit 1 fi } # 显示服务状态 show_status() { log_info "显示服务状态..." docker-compose ps } # 主函数 main() { log_info "开始部署Flask提示词大师..." # 检查环境变量 check_env # 安装依赖 install_dependencies # 运行数据库迁移 run_migrations # 构建Docker镜像 build_docker # 启动Docker服务 start_docker # 健康检查 health_check # 显示服务状态 show_status log_info "部署完成!" log_info "应用地址: http://localhost" log_info "API地址: http://localhost/api" } # 脚本入口 case "${1:-deploy}" in "deploy") main ;; "build") build_docker ;; "start") start_docker ;; "stop") log_info "停止Docker服务..." docker-compose down ;; "restart") log_info "重启Docker服务..." docker-compose restart ;; "logs") docker-compose logs -f ;; "status") show_status ;; *) echo "用法: $0 {deploy|build|start|stop|restart|logs|status}" exit 1 ;; esac