🐳

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