Como construir corretamente uma imagem do docker cron?

5

Eu estou tentando construir uma imagem baseada no Debian para dockerize um processo cron, mas minhas tarefas cron nunca são iniciadas. Aqui está o meu Dockerfile :

FROM debian:jessie
RUN apt-get update && apt-get install -y --no-install-recommends cron
COPY jobs.txt /etc/crontab
RUN touch /log.txt
CMD ["cron", "-f"]

... e o arquivo jobs.txt :

* * * * * root echo "job done" >> /log.txt

Percebi que há algo errado com o comando COPY , porque quando eu substituo

COPY jobs.txt /etc/crontab

com

RUN echo '* * * * * root echo "job done" >> /log.txt' > /etc/crontab

funciona perfeitamente.

Portanto, há um problema apenas com o arquivo jobs.txt e o Docker incapazes de copiá-lo da maneira correta? Devo consertar esse arquivo ou usar uma abordagem completamente diferente?

    
por Andriy Maletsky 30.04.2016 / 17:53

1 resposta

3

A única diferença entre usar COPY e RUN são as permissões no arquivo /etc/crontab : com COPY , isso é 664 e com RUN 644.

Não consigo encontrar nada nas permissões que o /etc/crontab precisa ter, mas se você adicionar

RUN chmod 644 /etc/crontab

após a linha COPY no seu Dockerfile , o cronjobs é executado (pelo menos para mim). Então eu acho que as permissões devem ser 644

    
por 30.04.2016 / 19:40

Tags