#!/bin/bash set -e IMAGE_NAME="web-signature-service" CONTAINER_NAME="web-signature-service" PORT="8000" echo "=========================================" echo "Web Header Signature Service - Deploy" echo "=========================================" cd "$(dirname "$0")" # 检查 .env 文件,如果存在则加载 ENV_FILE="" if [ -f ".env" ]; then echo "Found .env file, will use it for deployment." ENV_FILE="--env-file .env" else echo "Warning: .env file not found. Service will use default target configurations." fi case "${1:-up}" in up) echo "" echo "[1/3] Building Docker image..." docker build -t ${IMAGE_NAME} . echo "" echo "[2/3] Stopping old container (if exists)..." docker stop ${CONTAINER_NAME} 2>/dev/null || true docker rm ${CONTAINER_NAME} 2>/dev/null || true echo "" echo "[3/3] Starting service..." # 注意: 传入环境变量配置 docker run -d \ --name ${CONTAINER_NAME} \ -p ${PORT}:8000 \ --restart unless-stopped \ -v /dev/shm:/dev/shm \ --security-opt seccomp=unconfined \ -e TZ=Asia/Shanghai \ ${ENV_FILE} \ ${IMAGE_NAME} echo "" echo "Waiting for service to start..." sleep 3 echo "" echo "=========================================" echo "Deployment completed!" echo "" echo "Service URL: http://localhost:${PORT}" echo "API Docs: http://localhost:${PORT}/docs" echo "Health: http://localhost:${PORT}/health" echo "Get Sign: http://localhost:${PORT}/fingerprint" echo "" echo "View Logs: docker logs -f ${CONTAINER_NAME}" echo "Stop: docker stop ${CONTAINER_NAME}" echo "=========================================" ;; down) echo "Stopping service..." docker stop ${CONTAINER_NAME} 2>/dev/null || true docker rm ${CONTAINER_NAME} 2>/dev/null || true echo "Service stopped." ;; logs) docker logs -f ${CONTAINER_NAME} ;; *) echo "Usage: $0 [command]" echo "Commands:" echo " up - Build and start (default)" echo " down - Stop and remove" echo " logs - View logs" ;; esac