Cron jobs no Debian / Ubuntu Docker Swarm Resumo

0

Eu queria saber como configurar um contêiner de trabalho cron separado em meu enxame docker para executar tarefas agendadas em um processo / contêiner separado. Eu gostaria de resumir alguns conhecimentos que reuni em vários posts até conseguir que todos os meus trabalhos cron trabalhassem no enxame docker. Por favor, 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 agendadas.

    
por Rob 27.04.2017 / 09:16

1 resposta

1

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
por 27.04.2017 / 09:16