160 lines
2.9 KiB
Bash
160 lines
2.9 KiB
Bash
|
|
#!/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
|