Docker Composeとは?
Docker Composeは、複数のDockerコンテナを簡単に管理・実行するためのツールです。
単一の設定ファイル(docker-compose.yml)を用いて、複数のサービスを一括管理できます。
特に、開発環境やテスト環境で複数のコンテナを連携させる場合に非常に便利です。
Docker Composeのメリット
Docker Composeを使うと、次のようなメリットがあります。
- 複数のコンテナを簡単に管理
異なるサービス(例:ウェブアプリ、データベース、キャッシュなど)を一括で起動・停止できます。 - 環境構築の効率化
設定をコード化するため、チーム全体で同じ環境を再現可能です。 - シンプルなコマンド操作
数行のコマンドで複雑な環境を起動可能です。
Docker Composeの基本構造
Docker Composeは、docker-compose.ymlという設定ファイルを中心に動作します。このファイルには、どのコンテナをどのように動かすかが記述されます。
docker-compose.yml の基本例
version: "3.9" # Composeファイルのバージョン
services:
app:
image: python:3.9
volumes:
- ./app:/app
ports:
- "5000:5000"
command: python /app/app.py
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: sampledb
- services: サービス(コンテナ)を定義します。
- image: 使用するDockerイメージを指定します。
- ports: ホストとコンテナ間のポートマッピングを設定します。
- volumes: ホストマシンとコンテナ間でファイルを共有します。
- environment: 環境変数を設定します。
Docker Composeの基本操作
Docker Composeを使う際には、以下の基本的なコマンドを覚えておきましょう。
環境の起動
すべてのサービスが定義どおりに起動します。
docker-compose up
バックグラウンドでの起動
コンテナをバックグラウンドで実行します。
docker-compose up -d
環境の停止
実行中のすべてのコンテナを停止し、ネットワークやボリュームを削除します。
docker-compose down
簡単なWebアプリケーションの構築
以下のステップで、PythonとMySQLを連携した簡単なWebアプリケーションを構築します。
プロジェクトディレクトリを作成
mkdir docker-compose-example
cd docker-compose-example
アプリケーションのコードを準備app/app.py を作成
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Docker Compose!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
docker-compose.ymlを作成
上述の例をベースに設定。
Composeで環境を起動
docker-compose up
ブラウザで動作確認
ブラウザで http://localhost:5000 にアクセスし、”Hello, Docker Compose!”が表示されれば成功です。
よくあるエラーと対処法
- ポートの競合エラー
メッセージ例: “Bind for 0.0.0.0:5000 failed”
→ 他のアプリケーションが同じポートを使用している可能性があります。portsで別のポートを指定してください。 - ボリュームのキャッシュが原因で変更が反映されない
→docker-compose down --volumesでキャッシュをクリア。
まとめ

Docker Composeは、複数のコンテナを効率的に管理するための強力なツールです。
本記事で紹介した基本操作や設定を使えば、初心者でも簡単にComposeを利用した環境を構築できます。ぜひ、日々の開発で活用してみてください!


コメント