Cron jobs no Debian / Ubuntu Resumo do Docker Swarm

Cron jobs no Debian / Ubuntu Resumo do Docker Swarm

Eu queria saber como configurar um contêiner de cron job separado em meu docker swarm para executar cron jobs em um processo/contêiner separado. Gostaria de resumir alguns conhecimentos que reuni em vários posts até conseguir que todos os meus cron jobs funcionassem no docker swarm. Adicione melhorias nos comentários ou edite-os diretamente, se puder.

Isso foi testado com o docker 17.04 e um contêiner debian:jessie para tarefas cron.

Responder1

construir

Dockerfilepara contêiner de cron job, instala o cron, inicia o serviço cron na inicialização do contêiner e 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, tenha uma pasta contendo seus cron jobs (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 tarefas cron em

  • /var/spool/cron/crontabs/mycrontabque são criados via ferramenta cli$crontab/ também conhecido como usuário crontabs

  • /etc/crontabsque é uma coleção de crontabs para todo o sistema

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # sem 's
  • /etc/cron.dailyque é uma pasta que contém scripts bash simples em execução diariamente
  • /etc/cron.dque é uma pasta contendo tarefas cron de todo o sistema em arquivos semelhantes a/etc/crontabs. Os arquivos não devem conter travessões, apenas sublinhados
    • sudo vi /etc/cron.d/system_cron
    • '* * * * *' root /bin/touch /projectdir/system_cron.d_works # sem 's
    • sudo chown root:root /etc/cron.d/system_cron

informação relacionada