我正在尝试在 docker 容器中创建一个 cron 任务。一切都根据 @VonC 的配置进行配置回答
我的 dockerfile 看起来像这样
FROM python:3.6.9
WORKDIR usr/src/mydir
COPY requirements.txt .
# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron
# Create the log file to be able to run tail
RUN touch /var/log/cron.log
#Install Cron
RUN apt-get update
RUN apt-get -y install cron
# Run the command on container startup
CMD cron && tail -f /var/log/cron.log
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
但 cron 服务默认不启动
[FAIL] cron is not running ... failed!
cron 服务在从容器中明确推送后开始工作
service cron start
怎么了?
答案1
已经很接近了,这是修改后的 Dockerfile,它不会出现错误并启动 cron:
FROM python:3.6.9
# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron
#Install Cron
RUN apt-get update
RUN apt-get -y install cron
# Create the log file to be able to run tail
RUN touch /var/log/cron.log
# Run the command on container startup
CMD /etc/init.d/cron start && tail -f /var/log/cron.log
话虽如此,如果你只是测试一下,这个 Dockerfile 还是不错的。但是,要在生产环境中运行,你可能需要研究服务是如何在 docker 镜像中捆绑的(使用 exec 等)