Debian / Ubuntu Docker Swarm の Cron ジョブの概要

Debian / Ubuntu Docker Swarm の Cron ジョブの概要

別のプロセス/コンテナで cron ジョブを実行するために、docker swarm で別の cron ジョブ コンテナを構成する方法を知りたいと思いました。docker swarm ですべての cron ジョブが機能するまで、いくつかの投稿から収集した知識をまとめたいと思います。コメントに改善点を追加するか、可能であれば直接編集してください。

これは、docker 17.04 と cron ジョブ用の debian:jessie コンテナを使用してテストされました。

答え1

建てる

Dockerファイルcronジョブコンテナの場合、cronをインストールし、コンテナの起動時にcronサービスを開始し、その後tailコマンドでコンテナを実行し続ける

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

構成

ドッカー

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/mycrontabCLIツールで作成される$ クローンタブ/ 別名ユーザーcrontab

  • /etc/crontabsこれはシステム全体のcrontabのコレクションです

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # 'sなし
  • 毎日毎日実行されるプレーンな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

関連情報