Run a Cron Job Inside of a Docker Container
Jump to navigation
Jump to search
External
Internal
Overview
The procedure consists in building an image that contains cron, and that runs the cron daemon in foreground as shown below:
/usr/sbin/crond -n -s
The daemon is configured to run in foreground, and also to log into syslog instead of sending e-mails (not tested).
Dockerfile
FROM centos:latest RUN yum install -y crontabs logrotate RUN echo "* * * * * root /opt/activity >> /tmp/cron.log 2>&1" >> /etc/crontab COPY ./activity /opt/activity ENTRYPOINT ["/usr/sbin/crond", "-n"]
cron Job Output
We do not want crond to e-mail stdout/stderr of the jobs it runs, but rather to log them locally, as shown here.
Note that this will write into the writable layer of the container, so either we should design the cron jobs to output nothing on success, and only use this mechanism for debugging.