headPicker/deploy.sh

86 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -e
IMAGE_NAME="web-signature-service"
CONTAINER_NAME="web-signature-service"
PORT="20097"
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