construir
Dockerfile para o contêiner da tarefa do cron, instala o cron, inicia o serviço do cron no início do contêiner e, em seguida, mantém o contêiner em execução com o comando tail
RUN apt-get update && apt-get install -qq -yes cron
CMD service cron start && tail -f /dev/null
composição
docker-compose.yml
services:
cron:
image: debian:jessie
volumes:
- mycronjobs:/etc/cron.d
arquivos de trabalho
no caminho raiz do seu projeto tem uma pasta contendo seus trabalhos agendados (use apenas sublinhados para caracteres especiais no nome do arquivo)
me@machine:/projectdir$ ls -al
-rw-rw-r-- 1 me me 978 Apr 26 17:49 docker-compose.yml
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 Dockerfile
drwxrwxr-x 6 me me 4096 Apr 26 16:57 mycronjobs
me@machine:/projectdir$ ls -al mycronjobs
-rw-rw-r-- 1 me me 978 Apr 26 17:49 job-dash-bad
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 job_underscore_good
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 check_running
definição de trabalho
você pode ter trabalhos agendados em
-
/ var / spool / cron / crontabs / mycrontab que são criados através da ferramenta cli $ crontab / a.k.a crontabs do usuário
-
/ etc / crontabs que é uma coleção de crontabs do sistema
- '* * * * *' root / bin / touch / projectdir / system_crontab_works # sem 's
- /etc/cron.daily , que é uma pasta que contém scripts normais de bash em execução diariamente
-
/etc/cron.d , que é uma pasta que contém tarefas cron do sistema em arquivos semelhantes a / etc / crontabs . Os arquivos não devem conter traços, apenas sublinhados
- sudo vi /etc/cron.d/system_cron
- '* * * * *' root / bin / touch /projectdir/system_cron.d_works # sem 's
- sudo chown root: raiz /etc/cron.d/system_cron