前回の記事で、Docker Desktop上にCoderを導入し、Webのみで、Dockerコンテナを構築したり、プログラムを作成してデプロイを行ったりする環境を作りました。
今回は、Coderを使って、他のコンテナに対してスケジュール実行するためのCron実行専用コンテナを作成します。
まず、Coderを起動し、ログインします。
前回作成した、Coderフォルダと同一階層に「Cron」フォルダを作成し、下記4つのファイルを作成します。
- .env
- crontab
- docker-compose.yml
- Dockerfile
Coderの画面では、以下のような感じになります。
それぞれファイルに以下内容を書き込みます。
■.env
Docker Desktop for Windowsでコンテナを実行する場合で、コンテナ内からDockerコマンドを実行したい場合に作成しておきます。
■crontab
Cron実行専用コンテナでスケジュールを設定するためのファイルです。
■docker-compose.yml
Dockerfileを起動するための定義です。
■Dockerfile
コンテナの元にするイメージは「ubuntu」です。
設定は、日本語化、Cronに必要なモジュールのインストールを実施しています。
Coderのターミナルで、下記コマンドを実行し、コンテナを起動すれば完了です。
cd Cron
sudo docker-compose build
sudo docker-compose up -d
ポイントは、BusyBoxのcronを利用している点です。
通常のcronでは、環境変数を独自に持っており、Dockerのホストから引き継いだDockerコマンドを実行するには、別途cron側に環境変数を渡してやる必要があります。
BusyBoxのcronを利用すれば、環境変数引き継ぎ処理を省略できます。
コメント