0%

Docker中运行定时任务

直接使用cron启动

Dockerfile:

1
2
3
4
5
6
7
8
9
10
FROM ubuntu:14.04

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

ADD . /app
WORKDIW /app

RUN echo '* * * * * root bash -c "/app/cron.sh"' >> /etc/crontab

CMD ["cron", "-f"]

注意

有时候在docker容器中启动定时任务的时候可能取不到环境变量,此时可以这样启动定时任务:

1
env >> /etc/environment && cron -f

使用supervisor管理

cron.conf:

1
2
3
4
5
6
[program:cron]
command=bash -c "cron -f"
user=root
autostart=true
autorestart=true
redirect_stderr=true

Dockerfile:

1
2
3
4
5
6
7
8
9
10
11
FROM ubuntu:14.04

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

ADD . /app
WORKDIW /app

RUN echo '* * * * * root bash -c "/app/cron.sh"' >> /etc/crontab
RUN cat cron.conf > /etc/supervisor/conf.d/cron.conf

CMD ["supervisor", "-n"]