docker runはもう不要? Docker ComposeでPython環境を楽に管理しよう!
🐳 はじめに
Dockerfile を作成し、docker run
を使って Python の環境をセットアップするのは基本的な手法です。しかし、開発を進めるうちに以下のような問題が発生することはないでしょうか?
docker run
のオプションが長すぎて覚えられない- 毎回同じコマンドを打つのが面倒
- チームメンバーと共有しづらい
例えば、次のような docker run
コマンドを実行するとします。
docker run -it --rm \
-v $(pwd):/app \
-w /app \
python:3.12 \
python main.py
これはシンプルな Python の実行環境ですが、オプションが増えると 複雑になりミスしやすくなります。
そこで docker compose
を使うと、設定を YAML にまとめて簡単に実行できる ようになります!
docker compose
でシンプルに管理する
🚀 📂 ファイル構成
.
├── Dockerfile
├── docker-compose.yml
└── main.py
Dockerfile
の作成
🛠 まず、Python 環境を作成するための Dockerfile
を用意しましょう。
FROM python:3.12
WORKDIR /app
COPY . /app
CMD ["python", "main.py"]
これにより、python:3.12
の公式イメージをベースに、作業ディレクトリを /app
に設定し、カレントディレクトリのファイルをコンテナ内にコピーする構成になります。
docker-compose.yml
の基本形
docker compose
を使えば、上記の長いコマンドを シンプルな YAML ファイルにまとめて管理 できます。
以下の docker-compose.yml
を作成しましょう。
services:
app:
build: .
volumes:
- .:/app
command: python main.py
main.py
のサンプル
📌 次に、main.py
を作成して、実際に動作を確認してみましょう。
print("Hello, Docker Compose!")
これで docker compose up
を実行すると、コンテナ内で main.py
が実行され、Hello, Docker Compose!
と表示されるはずです。
docker compose
の実行方法
🎯 コンテナの起動
上記の docker-compose.yml
を用意したら、以下のコマンドを実行するだけで 簡単にコンテナを立ち上げられます。
docker compose up --build
これだけで Python の環境が整い、main.py
が実行されて Hello, Docker Compose!
と表示されます!
コンテナの削除
今回の構成では、docker compose up
を実行するとコンテナは一度実行され、処理が終わると自動的に停止します。ただし、停止したコンテナを削除する場合は、以下のコマンドを実行します。
docker compose down
このコマンドを実行すると、コンテナが削除され、関連するネットワークや一時的なボリュームも削除 されます。
docker-compose.yml
の解説
📖 設定項目 | 役割 |
---|---|
services: |
管理するコンテナ群 |
app: |
サービス名(Python コンテナ) |
build: . |
Dockerfile を元にコンテナを作成 |
volumes: - .:/app |
ホストのディレクトリをコンテナにマウント |
command: python main.py |
実行するコマンド |
✅ まとめ
- 長い
docker run
コマンドを書かなくて済む! - 環境設定を
docker-compose.yml
にまとめられる! - チームメンバーと簡単に共有できる!
docker run
を使っていて、「コマンドが長すぎて辛い…」と感じたら、ぜひ docker compose
を試してみてください! 🎉
Discussion