Debian / Ubuntu Docker Swarm 中的 Cron 作業摘要

Debian / Ubuntu Docker Swarm 中的 Cron 作業摘要

我想知道如何在 docker swarm 中配置單獨的 cron 作業容器,以便在單獨的進程/容器中執行 cron 作業。我想總結我從幾篇文章中收集到的一些知識,直到我在 docker swarm 中完成所有 cron 工作。請在評論中添加改進,或者如果可以的話直接編輯它們。

這是使用 docker 17.04 和用於 cron 作業的 debian:jessie 容器進行測試的。

答案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 工具創建的$ 定時任務/ 又稱使用者 crontab

  • /etc/crontabs這是系統範圍內的 crontab 集合

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # 不帶 's
  • /etc/cron.daily這是包含每天運行的普通 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

相關內容