Files
website/deploy-prod.sh
2025-11-21 23:18:13 +08:00

79 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# 生产环境部署脚本
# 用于构建和启动OmniVerse官网
set -e
echo "=========================================="
echo " OmniVerse 官网生产环境部署"
echo "=========================================="
echo ""
# 检查必要文件
if [ ! -f ".env.production" ]; then
echo "错误:找不到 .env.production 文件"
echo "请复制 .env.production.example 并配置环境变量"
exit 1
fi
# 停止旧容器
echo "停止旧容器..."
docker-compose -f docker-compose.prod.yml down
# 清理旧镜像(可选)
read -p "是否清理旧的Docker镜像?(y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "清理旧镜像..."
docker system prune -f
fi
# 构建镜像
echo ""
echo "构建Docker镜像..."
docker-compose -f docker-compose.prod.yml build --no-cache
# 启动服务
echo ""
echo "启动服务..."
docker-compose -f docker-compose.prod.yml up -d
# 显示服务状态
echo ""
echo "等待服务启动..."
sleep 10
echo ""
echo "服务状态:"
docker-compose -f docker-compose.prod.yml ps
# 检查服务健康状态
echo ""
echo "检查服务健康状态..."
sleep 5
echo ""
echo "Web服务健康检查:"
docker inspect --format='{{json .State.Health}}' omniverse-web | python3 -m json.tool || echo "健康检查未就绪"
echo ""
echo "News爬虫服务健康检查:"
docker inspect --format='{{json .State.Health}}' omniverse-news-crawler | python3 -m json.tool || echo "健康检查未就绪"
echo ""
echo "=========================================="
echo " 部署完成!"
echo "=========================================="
echo ""
echo "访问地址:"
echo " HTTP: http://www.omniverseai.net"
echo " HTTPS: https://www.omniverseai.net (需要先申请SSL证书)"
echo ""
echo "查看日志:"
echo " docker-compose -f docker-compose.prod.yml logs -f"
echo ""
echo "如需申请SSL证书,请运行:"
echo " ./init-ssl.sh"
echo ""