0%

Docker 运行 crontab 示例

cron 文件

hello-cron

1
2
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# An empty line is required at the end of this file for a valid cron file.

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM ubuntu:latest
MAINTAINER docker@ekito.fr

RUN apt-get update && apt-get -y install cron

# Copy hello-cron file to the cron.d directory
COPY hello-cron /etc/cron.d/hello-cron

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Apply cron job
RUN crontab /etc/cron.d/hello-cron

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD cron && tail -f /var/log/cron.log

测试

script
1
2
docker build --rm -t ekito/cron-example .
docker run -it ekito/cron-example

说明

可以使用 cron -f 作为 dockerfile 的 CMD,这样会强制 crontab 前台运行

原文地址:

how-to-run-a-cron-job-inside-a-docker-container