python docker cron 作业没有输出

No output on python docker cron job

我一直在尝试在 docker 容器中设置一个简单的 cron 作业。当我构建 运行 作业时,没有错误,但没有记录任何内容。如果我进入容器,我可以看到 crontab(即 crontab -l)和 运行 文件(python test.py)。不知道我错过了什么才能看到预定的工作 运行。不知道它是 运行ning 而我的日志位置是错误的还是根本就不是 运行ning。

Docker 文件

FROM python:3.8.8
RUN apt-get update && apt-get -y install cron vim
WORKDIR /app
COPY crontab /etc/cron.d/crontab
COPY test.py /app/test.py
RUN chmod 0644 /etc/cron.d/crontab
RUN /usr/bin/crontab /etc/cron.d/crontab

# run crond as main process of container
CMD ["cron", "-f"]

crontab

* * * * * python /app/test.py > /proc/1/fd/1 2>/proc/1/fd/2
# new line

test.py

print('test')

我通过稍微调整来重现您的设置:我用一个简单的 echo >> /crontest.txt 替换了您的 python 脚本。它按预期工作。该文件在 docker 容器内创建,每分钟附加一行。 这让您只剩下一个问题,为什么 python /app/test.py > /proc/1/fd/1 2>/proc/1/fd/2 的行为不同于 echo >> /crontest.txt

Docker 文件:

FROM python:3.8.8
RUN apt-get update && apt-get -y install cron vim
WORKDIR /app
COPY crontab /etc/cron.d/crontab
RUN chmod 0644 /etc/cron.d/crontab
RUN /usr/bin/crontab /etc/cron.d/crontab

# run crond as main process of container
CMD ["cron", "-f"]

定时任务表:

* * * * * echo "test" >> /crontest.txt 
# new line
  1. 构建docker图像docker build --tag contest .
  2. 运行 docker 容器 docker run -n crontest-container contest
  3. exec 进入 运行ning 容器 docker exec -it crontest-container bash
  4. /crontest.txt的输出内容cat /crontest.txt(也可以查看crontab是运行ning top