首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在docker容器中运行cron作业?

如何在docker容器中运行cron作业?
EN

Stack Overflow用户
提问于 2019-03-11 14:36:50
回答 1查看 22.8K关注 0票数 6

我有一个python脚本来填充AWS中的Postgres数据库。

我可以手动运行它,它正在将数据加载到数据库中,没有任何问题。我想在docker容器中每5分钟运行一次。

所以我把它包含在docker镜像中来运行。但我不确定为什么它不能运行。我看不到任何附加到/var/log/cron.log文件的内容。有没有人能帮我弄清楚为什么它不能运行?

我能够在docker构建期间将脚本复制到映像中,并能够手动运行它。数据库正在被填充,我得到了预期的输出。

脚本位于将被复制到/code/文件夹的当前目录中

下面是我的代码:

文档文件:

FROM python:3
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get install -y cron
RUN apt-get install -y postgresql-client
RUN touch /var/log/cron.log
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
COPY crontab /etc/cron.d/cjob
RUN chmod 0644 /etc/cron.d/cjob
CMD cron && tail -f /var/log/cron.log

crontab:

*/5 * * * * python3 /code/populatePDBbackground.py >> /var/log/cron.log
# Empty line
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-13 08:13:19

Crontab需要额外的字段:运行以下命令的用户:

* * * * * root python3 /code/populatePDBbackground.py >> /var/log/cron.log
# Empty line

Dockerfile为:

FROM python:3
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get install -y cron postgresql-client
RUN touch /var/log/cron.log
RUN mkdir /code
WORKDIR /code
ADD . /code/
COPY crontab /etc/cron.d/cjob
RUN chmod 0644 /etc/cron.d/cjob
ENV PYTHONUNBUFFERED 1
CMD cron -f

测试python脚本populatePDBbackground.py为:

from datetime import datetime

print('Script has been started at {}'.format(datetime.now()))

最后我们得到:

$ docker run -d b3fa191e8822
b8e768b4159637673f3dc4d1d91557b374670f4a46c921e0b02ea7028f40e105

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b8e768b41596        b3fa191e8822        "/bin/sh -c 'cron -f'"   4 seconds ago       Up 3 seconds                            cocky_beaver

$ docker exec -ti b8e768b41596 bash
root@b8e768b41596:/code# tail -f /var/log/cron.log
Script has been started at 2019-03-13 00:06:01.095013
Script has been started at 2019-03-13 00:07:01.253030
Script has been started at 2019-03-13 00:08:01.273926
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55096382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档