deploy-jenkins.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/bash
  2. # Jenkins 部署脚本
  3. set -e
  4. echo "开始部署 WeIndex 服务..."
  5. # 构建 Docker 镜像
  6. echo "构建 Docker 镜像..."
  7. docker build -t weindex:latest .
  8. # 停止并删除旧容器(忽略不存在的容器错误)
  9. echo "停止旧容器..."
  10. docker stop weindex-web 2>/dev/null || true
  11. docker rm weindex-web 2>/dev/null || true
  12. docker stop weindex-task 2>/dev/null || true
  13. docker rm weindex-task 2>/dev/null || true
  14. # 如果端口被占用,尝试停止占用该端口的容器
  15. echo "检查端口占用情况..."
  16. CONFLICTING_CONTAINER=$(docker ps -q --filter "publish=8501")
  17. if [ ! -z "$CONFLICTING_CONTAINER" ]; then
  18. echo "发现占用8501端口的容器,正在停止..."
  19. docker stop $CONFLICTING_CONTAINER
  20. fi
  21. # 启动 Web 服务容器
  22. echo "启动 Web 服务容器..."
  23. docker run -d \
  24. --name weindex-web \
  25. --restart unless-stopped \
  26. -p 8501:8501 \
  27. -v $(pwd)/logs:/app/logs \
  28. --env-file .env \
  29. weindex:latest \
  30. streamlit run dashboard/app.py --server.address=0.0.0.0 --server.port=8501
  31. # 启动定时任务容器(运行main.py中的定时任务)
  32. echo "启动定时任务容器..."
  33. docker run -d \
  34. --name weindex-task \
  35. --restart unless-stopped \
  36. -v $(pwd)/logs:/app/logs \
  37. --env-file .env \
  38. weindex:latest \
  39. python -m app.main
  40. echo "部署完成!"
  41. # 显示容器状态
  42. echo "Web 服务容器状态:"
  43. docker ps | grep weindex-web || echo "Web 容器未运行"
  44. echo "定时任务容器状态:"
  45. docker ps | grep weindex-task || echo "任务容器未运行"