Docker Composeを利用すると、複数のDockerコンテナを一度に操作することができる。
今回は、Docker Composeを利用してPython実行環境を作成し、Pythonプログラムを実行してみたので、その手順を共有する。
なお、Docker Composeの詳細は、以下のサイトを参照のこと。
https://www.kagoya.jp/howto/cloud/container/dockercompose/
前提条件
以下の手順に従って、Windows端末上に、Docker Desktopをインストール済であること。
Docker Composeを利用したPythonプログラムの実行
Docker Composeを利用してDockerコンテナを起動し、DockerコンテナにログインしPythonプログラムを実行できるようにする。その手順は、以下の通り。
1) 以下のように、特定のフォルダ内に「Dockerfile」「docker-compose.yml」、インストールするPythonライブラリ「requirements.txt」、実行するPythonプログラム「decision_tree_sample.py」を配置する。
なお、Docker Composeを利用するため、今回は「docker-compose.yml」が必要になる。

「docker-compose.yml」の内容は以下の通りで、文字コードをUTF-8としている。

# docker-composeで使用するバージョン
version: '3'
services:
# サービス名
python_compose_test:
# Dockerfileのパス(既存のイメージを利用しない場合に指定)
build: .
# Dockerコンテナ名
container_name: 'python_compose_test'
#「docker container run -it -d (Dockerイメージ名)」の-itオプションを指定
stdin_open: true
tty: true
# Dockerコンテナが停止した時に再起動する
restart: always
# ローカルとコンテナ上のファイルを共有する
volumes:
- '.:/usr/local/python'上記以外のソースコードは、以下の記事と同様となる。
2) コマンドプロンプトを起動し、「Dockerfile」「docker-compose.yml」が入っているフォルダに移動後、「docker compose up -d --build」コマンドを実行し、Dockerイメージを作成する。

なお、オプション「--build」で、Dockerコンテナの開始前にDockerイメージを構築するようにし、オプション「-d」で、コンテナをバックグラウンドで起動するようにしている。
3)「docker image ls」コマンドで、2)で作成されたDockerイメージを確認する。また、「docker container ls」コマンドで、2)で作成・起動されたDockerコンテナを確認する。

Docker Desktop上でも、以下のように、2)で作成されたDockerイメージと、2)で作成・起動されたDockerコンテナが確認できる。


4)「docker-compose exec (コンテナ名) bash」を実行すると、以下のように、2)で起動したDockerコンテナにログインすることができる。

5) 2)で起動したDockerコンテナ内で、Pythonプログラム「decision_tree_sample.py」を実行すると、プログラムが正常終了し、画像ファイル「decision_tree_graph.png」が出力されることが確認できる。

このとき、「docker-compose.yml」の「volumes」の設定により、ローカルに「decision_tree_graph.png」が作成されているのが確認できる。


6) exitコマンドを実行すると、以下のように、2)で起動したDockerコンテナからログアウトできる。

このとき、Dockerコンテナは以下のように、まだ起動中であることが確認できる。

7) Dockerコンテナを終了するには、「docker-compose down」コマンドを実行する。

8) Dockerコンテナを終了すると、以下のように、Dockerコンテナは無くなり、Dockerイメージが残っていることが確認できる。


要点まとめ
- Docker Composeを利用すると、複数のDockerコンテナを一度に操作することができて便利である。







