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_USERPOSTGRES_PASSWORD を設定します。

注意点:

  • Docker Composeファイルは、プロジェクトのルートディレクトリに配置するのが一般的です。
  • docker-compose up コマンドを実行する前に、必要なDockerfileが揃っていることを確認してください。
  • depends_on を使うことで、コンテナの起動順序を制御できます。上の例では、web コンテナは app コンテナが起動してから起動します。
  • 本番環境では、環境変数の管理方法やボリュームのマウント方法などをより安全に設定する必要があります。
  • Docker Composeのバージョンによって使用できる構文が異なる場合があります。

おすすめポイント:

  • 環境構築の手間を省き、開発効率を向上させます。
  • 開発環境、テスト環境、本番環境を統一することで、環境差異による問題を減らせます。
  • コンテナ間の依存関係を定義することで、アプリケーション全体の構成を明確にできます。
  • Composeファイルはチームで共有しやすく、属人化を防ぎます。