Tips
開発Tips(2025-11-18)
Docker Composeを使って、複数コンテナで構成されたアプリケーションの環境構築を効率化するテクニックです。設定ファイルを記述することで、コマンド一つで環境を構築・起動・停止できます。
Docker
Docker Composeを使って、複数コンテナで構成されたアプリケーションの環境構築を効率化するテクニックです。設定ファイルを記述することで、コマンド一つで環境を構築・起動・停止できます。
Docker Composeによる環境構築の自動化
Docker Composeを使うことで、アプリケーションに必要な複数のコンテナ(Webサーバー、データベース、キャッシュサーバーなど)を定義し、それらのコンテナ間の連携をyamlファイルに記述できます。これにより、開発環境、テスト環境、本番環境を統一的に管理し、環境構築にかかる時間と手間を大幅に削減できます。
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
build: ./app
ports:
- "3000:3000"
environment:
- NODE_ENV=development
db:
image: postgres:14
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
説明:
上記の docker-compose.yml ファイルは、以下のような構成を定義しています。
- web: Nginx Webサーバーのコンテナ。ポート80をホストに公開し、
./htmlディレクトリをコンテナ内の/usr/share/nginx/htmlにマウントします。これにより、ホスト側のHTMLファイルをNginxで提供できます。 - app: アプリケーションのコンテナ。
./appディレクトリにあるDockerfileを使ってビルドされ、ポート3000をホストに公開します。NODE_ENV環境変数をdevelopmentに設定します。 - db: PostgreSQLデータベースのコンテナ。環境変数
POSTGRES_USERとPOSTGRES_PASSWORDを設定します。
注意点:
- Docker Composeファイルは、プロジェクトのルートディレクトリに配置するのが一般的です。
docker-compose upコマンドを実行する前に、必要なDockerfileが揃っていることを確認してください。depends_onを使うことで、コンテナの起動順序を制御できます。上の例では、webコンテナはappコンテナが起動してから起動します。- 本番環境では、環境変数の管理方法やボリュームのマウント方法などをより安全に設定する必要があります。
- Docker Composeのバージョンによって使用できる構文が異なる場合があります。
おすすめポイント:
- 環境構築の手間を省き、開発効率を向上させます。
- 開発環境、テスト環境、本番環境を統一することで、環境差異による問題を減らせます。
- コンテナ間の依存関係を定義することで、アプリケーション全体の構成を明確にできます。
- Composeファイルはチームで共有しやすく、属人化を防ぎます。