#!/bin/bash echo "==========================================" echo "SM2签名服务 - 一键部署脚本" echo "==========================================" echo "" # 检查Docker if ! command -v docker &> /dev/null; then echo "❌ 错误: 未安装Docker" echo "" echo "请先安装Docker:" echo "curl -fsSL https://get.docker.com | sh" exit 1 fi echo "✅ Docker已安装: $(docker --version)" echo "" # 停止旧容器 if docker ps -a | grep -q sm2-sign-server; then echo "停止旧容器..." docker stop sm2-sign-server 2>/dev/null docker rm sm2-sign-server 2>/dev/null fi # 构建镜像 echo "构建Docker镜像..." docker build -t sign-server:latest . if [ $? -ne 0 ]; then echo "❌ 镜像构建失败" exit 1 fi echo "✅ 镜像构建成功" echo "" # 启动容器 echo "启动容器..." docker run -d \ --name sm2-sign-server \ -p 8888:8888 \ --restart unless-stopped \ --log-opt max-size=10m \ --log-opt max-file=3 \ sign-server:latest if [ $? -ne 0 ]; then echo "❌ 容器启动失败" exit 1 fi echo "✅ 容器启动成功" echo "" # 等待服务启动 echo "等待服务启动..." sleep 3 # 健康检查 echo "检查服务状态..." HEALTH_CHECK=$(curl -s http://localhost:8888/api/health) if [ $? -eq 0 ]; then echo "✅ 服务运行正常" echo "响应: $HEALTH_CHECK" else echo "⚠️ 健康检查失败,查看日志:" docker logs --tail 20 sm2-sign-server fi echo "" echo "==========================================" echo "部署完成!" echo "==========================================" echo "访问地址: http://localhost:8888" echo "" echo "常用命令:" echo " 查看日志: docker logs -f sm2-sign-server" echo " 停止服务: docker stop sm2-sign-server" echo " 启动服务: docker start sm2-sign-server" echo " 重启服务: docker restart sm2-sign-server" echo "=========================================="