diff --git a/.github/workflows/cron-docker .yml b/.github/workflows/cron-docker .yml new file mode 100644 index 00000000..c88569a8 --- /dev/null +++ b/.github/workflows/cron-docker .yml @@ -0,0 +1,28 @@ +name: Cron AutoRead Docker Image Push + +on: + push: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Check Out Repo + uses: actions/checkout@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Build and Push Image + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./cron-Dockerfile + push: true + tags: 14790897/cron-auto-read:latest diff --git a/Dockerfile b/Dockerfile index 2098ff14..a0951968 100644 --- a/Dockerfile +++ b/Dockerfile @@ -59,14 +59,5 @@ RUN npm install # 将根目录复制到容器中 COPY . . -# 创建一个新的 crontab 文件 -RUN echo "0 3 * * * node /app/pteer.js >> /var/log/cron.log 2>&1" > /etc/cron.d/puppeteer-cron - -# 给 crontab 文件适当的权限 -RUN chmod 0644 /etc/cron.d/puppeteer-cron - -# 将 cron 日志文件的权限设置为可写 -RUN touch /var/log/cron.log && chmod 0666 /var/log/cron.log - -# 将 cron 设置为在前台运行,并将日志输出到控制台 -CMD cron -f && tail -f /var/log/cron.log +# 设置容器启动时运行的命令 +CMD ["node", "/app/pteer.js"] diff --git a/README.md b/README.md index c0898485..d07d087a 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,9 @@ sudo apt-get install -y wget unzip fontconfig locales gconf-service libasound2 l ## 使用方法四:docker 定时运行 -克隆仓库,修改.env 或者在`docker-compose.yml`里面设置环境变量,然后运行 +### 1.立刻执行 + +克隆仓库,在`docker-compose.yml`里面设置环境变量,然后运行 ```sh docker-compose up -d @@ -54,3 +56,10 @@ sudo apt-get install -y wget unzip fontconfig locales gconf-service libasound2 l ```sh docker-compose logs -f ``` + +### 2.定时运行(目前存在问题) + +```sh +docker-compose -f cron-docker-compose.yml up -d + +``` diff --git a/cron-Dockerfile b/cron-Dockerfile new file mode 100644 index 00000000..ec6cefb8 --- /dev/null +++ b/cron-Dockerfile @@ -0,0 +1,72 @@ +# 使用官方 Node.js 作为父镜像 +FROM node:18-slim + +# 设置工作目录 +WORKDIR /app + +# 复制 package.json 和 package-lock.json (如果存在) +COPY package*.json ./ + +# 安装 Puppeteer 依赖 +RUN apt-get update && apt-get install -y \ + cron\ + wget \ + ca-certificates \ + fonts-liberation \ + libappindicator3-1 \ + libasound2 \ + libatk-bridge2.0-0 \ + libatk1.0-0 \ + libc6 \ + libcairo2 \ + libcups2 \ + libdbus-1-3 \ + libexpat1 \ + libfontconfig1 \ + libgbm1 \ + libgcc1 \ + libgdk-pixbuf2.0-0 \ + libglib2.0-0 \ + libgtk-3-0 \ + libnspr4 \ + libnss3 \ + libpango-1.0-0 \ + libpangocairo-1.0-0 \ + libstdc++6 \ + libx11-6 \ + libx11-xcb1 \ + libxcb1 \ + libxcomposite1 \ + libxcursor1 \ + libxdamage1 \ + libxext6 \ + libxfixes3 \ + libxi6 \ + libxrandr2 \ + libxrender1 \ + libxss1 \ + libxtst6 \ + lsb-release \ + xdg-utils \ + --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* +#时区为中国 +ENV TZ=Asia/Shanghai + +# 安装 Node.js 依赖 +RUN npm install + +# 将你的 Puppeteer 脚本复制到容器中 +COPY . . + +# 创建一个新的 crontab 文件 +RUN echo "0 3 * * * node /app/pteer.js >> /var/log/cron.log 2>&1" > /etc/cron.d/puppeteer-cron + +# 给 crontab 文件适当的权限 +RUN chmod 0644 /etc/cron.d/puppeteer-cron + +# 将 cron 日志文件的权限设置为可写 +RUN touch /var/log/cron.log && chmod 0666 /var/log/cron.log + +# 将 cron 设置为在前台运行,并将日志输出到控制台 +CMD cron -f && tail -f /var/log/cron.log diff --git a/cron-docker-compose.yml b/cron-docker-compose.yml new file mode 100644 index 00000000..3c72efe5 --- /dev/null +++ b/cron-docker-compose.yml @@ -0,0 +1,9 @@ +version: "3.8" # 使用 Docker Compose 文件版本 3.8,根据需要可以更改 +services: + cronautoread: + image: 14790897/cron-auto-read:latest + container_name: cron-auto-read + # environment: # 设置环境变量(这里设置后不需要在.env文件中设置) + # USERNAMES: "用户名" + # PASSWORDS: "密码" + restart: unless-stopped # 容器退出时重启策略