Задания Cron в Debian / Ubuntu Docker Swarm Краткое изложение

Задания Cron в Debian / Ubuntu Docker Swarm Краткое изложение

Я хотел узнать, как настроить отдельный контейнер заданий cron в моем docker swarm, чтобы выполнять задания cron в отдельном процессе/контейнере. Я хотел бы подвести итог некоторым знаниям, которые я собрал из нескольких постов, пока не заставил все свои задания cron работать в docker swarm. Пожалуйста, добавляйте улучшения в комментариях или редактируйте их напрямую, если можете.

Это было протестировано с помощью docker 17.04 и контейнера debian:jessie для заданий cron.

решение1

строить

Dockerfileдля контейнера заданий cron устанавливает cron, запускает службу cron при запуске контейнера, затем поддерживает работу контейнера с помощью команды tail

RUN apt-get update && apt-get install -qq -yes cron
CMD service cron start && tail -f /dev/null

состав

docker-compose.yml

services:
  cron:
    image: debian:jessie
    volumes:
      - mycronjobs:/etc/cron.d

файлы работы

в корневом каталоге вашего проекта должна быть папка, содержащая ваши задания cron (используйте подчеркивания только для специальных символов в имени файла)

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

определение работы

вы можете иметь задания cron в

  • /var/spool/cron/crontabs/mycrontabкоторые создаются с помощью инструмента cli$ кронтаб/ он же пользовательские кронтабы

  • /etc/crontabsкоторый представляет собой общесистемную коллекцию crontab-файлов

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # без 's
  • /etc/cron.ежедневноэто папка, содержащая простые скрипты bash, которые запускаются ежедневно
  • /etc/cron.dкоторая представляет собой папку, содержащую общесистемные задания cron в файлах, похожих на/etc/crontabs. Файлы не должны содержать дефисов, только подчеркивания.
    • sudo vi /etc/cron.d/system_cron
    • '* * * * *' root /bin/touch /projectdir/system_cron.d_works # без 's
    • sudo chown root:root /etc/cron.d/system_cron

Связанный контент