LoginSignup
1
2

Dockerで『簡単に』cronの定期実行を行う方法

Last updated at Posted at 2024-05-12

概要

今回は使わなかったものの、自身の立ち上げてようとしているサービスでDockerのcronを定期実行する方法を試したので備忘録としてまとめてみようと思います。
※また、全体的に他のサイトはわかりずらかったのもまとめてみた理由の一つです💦

ファイル構成

docker
 │  └── cron
 │       ├── config.json
 │       ├── Dockerfile
 │       ├── backup.sh
 │
 ├── buckup
 └── docker-compose.yml

ファイルの内容

docker-compose.yml
version: '3.8'

services:
  cron:
    container_name: 'cron'
    build:
      context: .
      dockerfile: ./docker/cron/Dockerfile
    # platform: linux/amd64 # 必要に応じて
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./docker/cron/config.json:/opt/crontab/config.json
      - ./backup:/backup
    environment: 
      PASSWORD: "${PASSWORD}"
config.json
[
    {
        "schedule":"@every 1m",
        "command":"echo 'test1111' >> /backup/test.log"
    },
    {
      "comment": "1分毎 ログ出力",
      "schedule": "@every 1m",
      "command": "/scripts/backup.sh"
    }
]
Dockerfile
FROM willfarrell/crontab:latest

# Copy the backup script and config file into the container
COPY ./docker/cron/backup.sh /scripts/
COPY ./docker/cron/config.json /opt/crontab

# # Grant execution permissions
RUN chmod +x /scripts/backup.sh

backup.sh
#!/bin/bash

# Set variables
# PASSWORD="${PASSWORD}"

# cron execute
echo 'test2222' >> /backup/test.log

結果

buckupフォルダのtest.logファイルに対して1分毎に

test1111
test2222

が出力されます。

cronの詳細設定

現状、config.jsonにて1分毎に実行するように設定していますが、設定を変えればもっと色々なこともできます。詳細はドキュメントを見ていただければと思います。

ドキュメント

参考になったリンク

Zenn

ドキュメント

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2