2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

cronをGUIで操作したいのでDkronを入れてみる

Last updated at Posted at 2021-01-02

やりたいこと

自分用の便利ツールをcronで実行するケースが増えてきた。
cronでもいいんだけど、WEBでJOBを確認したり、止めたりしたい。
自前のサーバで動作するため、Dockerで動かせたい。
クラスタとか、マルチ構成はやらない。

Dkronとは

簡単で信頼性の高いCronジョブらしい

image.png

公式TOPページ

Install

公式イメージがあるためDockerコマンドで一発起動。
オプションについて
 Webのポートを8080でそのままフォワード
 ジョブ情報は外だししたいのでdkron.dataボリュームをマウント
 マウントしたボリュームをdkronの起動オプション(--data-dir)に設定
 クラスタ構成にしないのでbootstrap-expectは1
 ノード名を付けないとランダム名になりdocker rm dkron → docker run っとすると前回の情報をうまく引き継げないので適当につける(node-name)

docker run --name dkron -p 8080:8080 -d -v dkron.data:/dkron.data dkron/dkron agent --server --bootstrap-expect=1  --data-dir=/dkron.data --node-name=node1

公式ガイド

Job登録

以下のURLよりダッシュボードへ遷移してJOBを登録する。
昔のdkronは/dashboard がパスだったらしく迷ったのでメモ

もちろんHTTPからAPIつついてもJOB登録可能

curl localhost:8080/v1/jobs -XPOST -d '{
  "name": "job1",
  "schedule": "@every 10s",
  "timezone": "Europe/Berlin",
  "owner": "Platform Team",
  "owner_email": "platform@example.com",
  "disabled": false,
  "tags": {
    "server": "true:1"
  },
  "metadata": {
    "user": "12345"
  },
  "concurrency": "allow",
  "executor": "shell",
  "executor_config": {
    "command": "date"
  }
}'

Jobの動作確認

以下のURLより確認する。
先ほどAPIで登録したjob1が10秒ごとに動いてるっぽい。

image.png

タイムゾーンの設定

cron起動する場合、タイムゾーンがUTCになっていたので「Asia/Tokyo」にしたい。

🙅 だめなやり方

Dockerのrunオプション( -e TZ=Asia/Tokyo )ではだめだった

🙆 正しいやり方

ホストのlocaltimeをコピってあげればよかった

docker cp /etc/localtime dkron:/etc/
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?