検索

ホームページ  >  に質問  >  本文

Docker コンテナーでの cron ジョブの実行: ステップバイステップ ガイド

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

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

これどうやってするの?

P粉914731066P粉914731066430日前583

全員に返信(2)返信します

  • P粉563831052

    P粉5638310522023-10-11 17:56:26

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

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

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

    リーリー

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

    CMD ["cron", "-f"]

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

    返事
    0
  • P粉818125805

    P粉8181258052023-10-11 16:39:03

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


    重要: docker-cron 問題 3< 中所述< /a> と同様: 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 CMDtail -f

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

    Jason Kulatunga

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

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

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

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

      リーリー

    返事
    0
  • キャンセル返事