Files
sms_forwarder/scripts/deploy.sh

139 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# SMS Forwarder Docker 部署脚本
set -e
echo "🚀 SMS Forwarder Docker 部署脚本"
echo "================================"
# 检查 Docker 和 Docker Compose
check_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 环境检查通过"
}
# 检查配置文件
check_config() {
if [ ! -f "config.yaml" ]; then
echo "⚠️ 配置文件不存在,从示例文件创建..."
if [ -f "config.example.yaml" ]; then
cp config.example.yaml config.yaml
echo "📝 请编辑 config.yaml 文件配置你的推送服务"
echo "是否现在编辑配置文件? (y/N)"
read -r response
if [[ "$response" =~ ^[Yy]$ ]]; then
${EDITOR:-nano} config.yaml
fi
else
echo "❌ 配置文件模板不存在"
exit 1
fi
else
echo "✅ 配置文件存在"
fi
}
# 构建镜像
build_image() {
echo "🔨 构建 Docker 镜像..."
docker build -t sms-forwarder:latest .
echo "✅ 镜像构建完成"
}
# 部署服务
deploy_service() {
echo "🚀 部署服务..."
# 停止现有服务
if docker ps -q --filter "name=sms-forwarder" | grep -q .; then
echo "⏹️ 停止现有服务..."
docker-compose down
fi
# 启动新服务
echo "▶️ 启动服务..."
docker-compose up -d
# 等待服务启动
echo "⏳ 等待服务启动..."
sleep 10
# 检查服务状态
if docker ps --filter "name=sms-forwarder" --filter "status=running" | grep -q sms-forwarder; then
echo "✅ 服务启动成功"
else
echo "❌ 服务启动失败"
docker-compose logs sms-forwarder
exit 1
fi
}
# 测试服务
test_service() {
echo "🧪 测试服务..."
# 等待服务完全启动
sleep 5
# 健康检查
if curl -f http://localhost:12152/health &> /dev/null; then
echo "✅ 健康检查通过"
else
echo "❌ 健康检查失败"
docker-compose logs sms-forwarder
exit 1
fi
# 状态检查
if curl -f http://localhost:12152/status &> /dev/null; then
echo "✅ 状态接口正常"
else
echo "❌ 状态接口异常"
fi
}
# 显示部署信息
show_info() {
echo ""
echo "🎉 部署完成!"
echo ""
echo "服务信息:"
echo " - 服务地址: http://localhost:12152"
echo " - API 文档: http://localhost:12152/docs"
echo " - 健康检查: http://localhost:12152/health"
echo " - 服务状态: http://localhost:12152/status"
echo ""
echo "管理命令:"
echo " - 查看日志: docker-compose logs -f sms-forwarder"
echo " - 重启服务: docker-compose restart sms-forwarder"
echo " - 停止服务: docker-compose down"
echo " - 查看状态: docker-compose ps"
echo ""
echo "测试命令:"
echo " - 发送测试通知: ./scripts/test-docker.sh"
echo ""
}
# 主函数
main() {
check_docker
check_config
build_image
deploy_service
test_service
show_info
}
# 运行主函数
main "$@"