Docker コンテナーでの cron ジョブの実行: ステップバイステップ ガイド
P粉914731066
P粉914731066 2023-10-10 18:54:39
0
2
593

シェル スクリプトを呼び出す docker コンテナ内で cron ジョブを実行しようとしています。

昨日オンラインとスタック オーバーフローで検索しましたが、実際に機能する解決策が見つかりません。

これどうやってするの?

P粉914731066
P粉914731066

全員に返信(2)
P粉563831052

承認された回答 運用環境では危険な可能性があります

CMD cron && tail -f /var/log/cron.log を使用すると、cron プロセスは基本的にフォークしてバックグラウンドで cron を実行し、メイン プロセスが終了します。 tailf をフォアグラウンドで実行させます。バックグラウンドの cron プロセスは気付かないうちに停止または失敗する可能性があり、コンテナーは引き続きサイレントに実行され、オーケストレーション ツールはコンテナーを再起動しません。

基本的なシェル リダイレクトを使用して、次のことを実行できます:

リーリー

CMD は次のようになります:

CMD ["cron", "-f"]

ただし、 の場合は、非 root ユーザー としてタスク を実行します。

いいねを押す +0
P粉818125805

crontab をイメージにコピーすると、そのイメージから起動されたコンテナーがジョブを実行できます。


重要: docker-cron 問題 3 と同様: cron ファイルには CRLF の代わりに LF を使用します。


SeeDocker を使用した cron ジョブの実行" /github.com/julienboulay" rel="noreferrer">Julien Boulay の Ekito/docker -cron

リーリー

2>&1 が何なのか知りたい場合は、Ayman Hourieh が説明します。 リーリー

ただし: cron が停止しても、container は引き続き実行されます。 (

Gaafar

コメント および apt-get のインストールのノイズを軽減する方法を参照してください。 : apt-get -y install -qq --force-yes cron も機能します)
Nathan Lloyd

にコメントしたように: あるいは、hugoShaka


answer

: のように、ジョブ自体がログ ファイルではなく stdout/stderr に直接リダイレクトされるようにします。 リーリー Dockerfile の最後の行を に置き換えます。 リーリー

ただし、

の場合は、非 root ユーザー

としてタスク

を実行します。 cron -f、cron "フロントエンド" について」も参照してください。「

docker ubuntu

cron -f は機能しません ビルドして実行します: リーリー リーリー


エリック

がコメントに
を追加しました

: docker CMD」の最後にある「

tail -f

出力 > 表示されない 」を参照してください。 ”末尾的 詳細については、

Jason Kulatunga

による「Docker での Cron の実行」 (2021 年 4 月) を参照してください。コメントは次のとおりです

Jason の画像を表示 AnalogJ/docker-cron に基づく:

  • Dockerfile は、ディストリビューションに応じて、cronie/crond をインストールします。

  • エントリ ポイントの初期化/etc/environment次に呼び出し

    リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート