Debian Dockerコンテナにcrontabスケジュールタスクを追加する

Debian Dockerコンテナにcrontabスケジュールタスクを追加する

現在、DockerイメージのほとんどはDebianベースです

# cat /etc/issue
Debian GNU/Linux 9 \n \l

Dockerコンテナはバックグラウンドサービスをサポートしていません。systemctl service crontabなどのバックグラウンドサービスは、

RUN systemctl start nginx

このようなソリューションを実装するには、それを開始するための独自のエントリポイント スクリプトを作成する必要があります。この記事では、Debian ベースの Docker コンテナでスケジュールされたタスクを設定する方法について説明します。

ケースの背景

フロントエンドプロジェクトをデプロイし、nginx イメージを使用しました。公式イメージは Debian ベースなので、Alpine と比べてサイズがあまり変わらないため、コンテナシステムには Debian を使用しました。

Dockerfileは次のようになります

nginx:1.15.10より
メンテナー Ryan Miao

コピーsources.list /etc/apt/sources.list
apt-get update && apt-get install -y net-tools procps curl wget vim telnet cron を実行、
  && apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/*

mkdir -p /data/log/nginx && mkdir -p /data/web && rm /etc/nginx/conf.d/default.conf を実行します。
default.conf を /etc/nginx/conf.d/ に追加します。
index.html /data/web/ を追加します。

clean_log.sh /data/ を追加します。
clean-cron をコピー /etc/cron.d/clean-cron
chmod 755 /data/clean_log.sh && crontab /etc/cron.d/clean-cron を実行します。

エントリポイント nginx && cron && /bin/bash

おそらく、cron をインストールし、次に nginx の設定を置き換え、静的ファイルをコピーし、最後に nginx を起動して cron を起動することになります。

時間制限のあるタスクが存在する理由を説明しましょう。スケジュールされたクリーンアップ スクリプトがあることがわかります。nginx 自体はログ処理モジュールを提供していないため、クリーンアップ スクリプトがあります。クリーンアップ スクリプトは定期的に実行する必要があるため、スケジュールされたタスクがあり、その後、Docker コンテナーがサービスをサポートしていないことがわかります。

一般的には、いくつかのステップがあります。

インストール

apt-get install cron

crontabに追加

crontab /etc/cron.d/your-crontab

docker の起動時に cron を開始する

ENTRYPOINT cron && xxxxx

ps、サイズが小さいため、画像マトリックスとして alpine を好む人はまだたくさんいます。しかし、この Linux コマンドは実に馴染みのないものです。

要約する

上記は、Debian Docker コンテナに crontab スケジュール タスクを追加する方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • crontab でスケジュールされたタスクが実行されない理由の概要
  • Linux Crontab シェル スクリプトを使用して第 2 レベルのスケジュールされたタスクを実装する方法
  • Linux で crontab を使用してスケジュールされたタスクを 1 秒に 1 回実行する方法
  • Linuxでcrontabスケジュールタスクが実行されない理由
  • django-crontab を使用してスケジュールされたタスクを実装する例

<<:  MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル

>>:  MySQL 8.0.12 winx64 解凍バージョンのインストール グラフィック チュートリアル

推薦する

CSS リスト モデルでのマーカー タグの使用

この記事では主に、 list-itemの下にある::master疑似要素、 list-style-i...

Windows10にmysql5.7.18をインストールするチュートリアル

このチュートリアルでは、MySQL 5.7.18のインストールと設定方法を参考までに紹介します。具体...

HTML で点線の境界線を設定する方法

CSSスタイルとHTMLタグ要素を使用するさまざまな HTML タグに点線の境界線を追加するために、...

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...

React.FCとReact.Componentの使用に関する簡単な説明

目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...

WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

目次1. 需要2. データベース設計3.Javaバックグラウンド構成の実装4. WeChatアプレッ...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

JDカルーセル効果を実現するための純粋なHTMLとCSS

JD カルーセルは、動的な効果を追加せず、主に位置決めの知識を使用して、純粋な HTML と CS...

JavaScript で H5 ゴールド コイン関数を実装する (サンプル コード)

今日は春節の金貨の赤い封筒のアクティビティを作りました。なかなか良い出来だと思います。皆さんと共有し...

jQuery エディタ プラグイン tinyMCE の使い方

簡略化されたファイル サイズを変更し、サンプルをダウンロードします。ファイルをローカル コンピュータ...

W3C チュートリアル (9): W3C XPath アクティビティ

XPath は、XML ドキュメントの一部を選択するための言語です。 XPath は、XSLT、XQ...

iframe を通じて DOM 要素のサイズ変更を監視する

開発プロセス中によく発生する問題は、div のサイズ変更をどのように監視するかということです。たとえ...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

ウェブフロントエンドコードを書く際の考慮事項のまとめ

1. HTMLタグの前に次のような文を追加するのが最適です。 <!DOCTYPE HTML P...