139 lines
3.4 KiB
Bash
Executable File
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 "$@"
|