Tips
開発Tips(2025-11-09)
Docker Composeを使って複数のコンテナを連携させ、開発環境を簡単に構築・管理するためのテクニックです。サービス間の依存関係を定義し、コマンド一つで環境を立ち上げることができます。
Docker
Docker Composeを使って複数のコンテナを連携させ、開発環境を簡単に構築・管理するためのテクニックです。サービス間の依存関係を定義し、コマンド一つで環境を立ち上げることができます。
Docker Composeによる開発環境の定義
Docker Composeを使用すると、アプリケーションの各コンポーネント(Webサーバー、データベース、キャッシュなど)を個別のコンテナとして定義し、それらをまとめて管理できます。 docker-compose.yml ファイルでサービス、ネットワーク、ボリュームなどの設定を記述し、環境の再現性を高めます。
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
volumes:
- .:/app
command: npm start
db:
image: postgres:13
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
説明:
version: Docker Composeファイルのバージョンを指定します。services: アプリケーションを構成するサービス(コンテナ)を定義します。web: Nginx Webサーバーの定義。ポート80を公開し、ローカルの./htmlディレクトリをコンテナ内の/usr/share/nginx/htmlにマウントします。appサービスに依存します。app: アプリケーションの定義。Dockerfileからイメージをビルドし、ポート3000を公開し、環境変数を設定し、ローカルの.ディレクトリをコンテナ内の/appにマウントします。npm startコマンドを実行します。db: PostgreSQLデータベースの定義。環境変数を設定し、db_dataボリュームをコンテナ内の/var/lib/postgresql/dataにマウントします。volumes: 永続化するボリュームを定義します。
注意点:
docker-compose.ymlファイルはプロジェクトのルートディレクトリに配置するのが一般的です。depends_onを使用して、サービスの起動順序を制御できます。- ボリュームを使用することで、コンテナが停止してもデータを保持できます。
おすすめポイント:
- 開発環境の構築が非常に簡単になり、チーム全体で同じ環境を共有できます。
- 設定ファイルとして環境を定義するため、環境構築の手順をドキュメント化する必要がなくなります。
- スケールアップも容易で、本番環境への移行もスムーズに行えます。