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
- 构建docker图像
docker build --tag contest .
- 运行 docker 容器
docker run -n crontest-container contest
- exec 进入 运行ning 容器
docker exec -it crontest-container bash
- /crontest.txt的输出内容
cat /crontest.txt
(也可以查看crontab是运行ning top
)
我一直在尝试在 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
- 构建docker图像
docker build --tag contest .
- 运行 docker 容器
docker run -n crontest-container contest
- exec 进入 运行ning 容器
docker exec -it crontest-container bash
- /crontest.txt的输出内容
cat /crontest.txt
(也可以查看crontab是运行ningtop
)