#!/bin/bash # Jenkins 部署脚本 set -e echo "开始部署 WeIndex 服务..." # 构建 Docker 镜像 echo "构建 Docker 镜像..." docker build -t weindex:latest . # 停止并删除旧容器(忽略不存在的容器错误) echo "停止旧容器..." docker stop weindex-web 2>/dev/null || true docker rm weindex-web 2>/dev/null || true docker stop weindex-task 2>/dev/null || true docker rm weindex-task 2>/dev/null || true # 如果端口被占用,尝试停止占用该端口的容器 echo "检查端口占用情况..." CONFLICTING_CONTAINER=$(docker ps -q --filter "publish=8501") if [ ! -z "$CONFLICTING_CONTAINER" ]; then echo "发现占用8501端口的容器,正在停止..." docker stop $CONFLICTING_CONTAINER fi # 启动 Web 服务容器 echo "启动 Web 服务容器..." docker run -d \ --name weindex-web \ --restart unless-stopped \ -p 8501:8501 \ -v $(pwd)/logs:/app/logs \ --env-file .env \ weindex:latest \ streamlit run dashboard/app.py --server.address=0.0.0.0 --server.port=8501 # 启动定时任务容器(运行main.py中的定时任务) echo "启动定时任务容器..." docker run -d \ --name weindex-task \ --restart unless-stopped \ -v $(pwd)/logs:/app/logs \ --env-file .env \ weindex:latest \ python -m app.main echo "部署完成!" # 显示容器状态 echo "Web 服务容器状态:" docker ps | grep weindex-web || echo "Web 容器未运行" echo "定时任务容器状态:" docker ps | grep weindex-task || echo "任务容器未运行"