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としている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 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コンテナを一度に操作することができて便利である。