diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..3913eef --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,72 @@ +name: 本地构建并运行容器 + +on: + push: + branches: [ main ] + paths-ignore: + - "README.md" + - "*.md" + - ".git" + - ".gitea" + - ".dockerignore" + - ".gitignore" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + + - name: 拉取最新代码 + uses: actions/checkout@v4 + + - name: 构建镜像 + uses: docker/build-push-action@v5 + with: + context: . + push: false + tags: | + ${{ vars.IMAGE_NAME }}:latest + + - name: 停止并删除旧容器 + run: | + CONTAINER_NAME="${{ vars.IMAGE_NAME }}" + docker stop ${CONTAINER_NAME} 2>/dev/null || true + docker rm ${CONTAINER_NAME} 2>/dev/null || true + echo "✅ 停止并删除旧容器 ${CONTAINER_NAME} 成功..." + + - name: 运行新容器 + run: | + # 容器名称 + CONTAINER_NAME="${{ vars.IMAGE_NAME }}" + + # 启动容器 + docker run -d \ + --name ${CONTAINER_NAME} \ + --restart always \ + ${{ vars.IMAGE_NAME }}:latest + + - name: 验证容器状态 + run: | + CONTAINER_NAME="${{ vars.IMAGE_NAME }}" + if docker ps --filter "name=${CONTAINER_NAME}" --filter "status=running" | grep -q ${CONTAINER_NAME}; then + echo "✅ 容器 ${CONTAINER_NAME} 启动成功" + # 显示容器日志 + docker logs ${CONTAINER_NAME} --tail 50 + else + echo "❌ 容器 ${CONTAINER_NAME} 启动失败" + docker logs ${CONTAINER_NAME} + exit 1 + fi + + - name: 清理旧镜像 + run: | + CONTAINER_NAME="${{ vars.IMAGE_NAME }}" + OLD_IMAGES=$(docker images --filter "reference=${CONTAINER_NAME}:*" --format "{{.ID}}" | tail -n +6) + if [ -n "${OLD_IMAGES}" ]; then + echo "🗑️ 清理旧镜像:${OLD_IMAGES}" + echo "${OLD_IMAGES}" | xargs -r docker rmi -f 2>/dev/null + echo "✅ 旧镜像清理成功" + else + echo "✅ 无旧镜像需要清理" + fi \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d7e9df5..b86b33e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,9 @@ RUN npm config set registry https://repo.huaweicloud.com/repository/npm/ && \ COPY . . + +ENV CRON=*/30 * * * * * +ENV PAGE_TIMEOUT=30000 ENV CHROME_PATH=/usr/bin/chromium ENV NODE_ENV=production diff --git a/docker-compose.yml b/docker-compose.yml index 14ca5fe..a8031e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,12 +4,15 @@ services: container_name: dy-monitor restart: always environment: - # 每30秒重新运行一次检查,默认每天早上8点 - # - CRON=*/30 * * * * * - # 每30秒重新运行一次检查,默认每天早上8点 - # - CRON=*/30 * * * * * + # 每30秒,运行一次检查 + - CRON=*/30 * * * * * + + # 每一小时,运行一次检查 + # - CRON=0 0 * * * * + # - DOUYIN_PAGE=抖音主播主页地址 - PAGE_TIMEOUT=30000 + # Chrome 路径 - CHROME_PATH=/usr/bin/chromium