Docker Composeのdocker-compose.yml完全ガイド: 基本から具体的な書き方まで

Docker Docker

Docker Composeは、複数のDockerコンテナを一括で管理し、簡単に起動・停止できるツールです。docker-compose.ymlファイルは、Composeの設定を定義するための重要なファイルで、プロジェクトの全体構成を一目で把握できるようにします。この記事では、docker-compose.ymlの基本概念から具体的な書き方までを解説します。

1. Docker Composeとは?

Docker Composeは、複数のDockerコンテナを簡単に定義、実行、および管理するためのツールです。docker-compose.ymlファイルを使って、アプリケーションのサービス、ネットワーク、ボリュームなどの設定を行います。これにより、複数のコンテナを単一のコマンドで管理できるため、開発や運用が効率的になります。

2. docker-compose.ymlの基本構造

docker-compose.ymlファイルは、YAML形式で記述され、主に以下の要素で構成されます:

  • version: Composeファイルのバージョンを指定します。
  • services: アプリケーションで使用する各コンテナの設定を定義します。
  • networks: コンテナ間のネットワーク設定を定義します(オプション)。
  • volumes: コンテナとホスト間で共有するデータの設定を定義します(オプション)。

基本的な構造は以下のようになります:

version: '3'
services:
  service_name:
    image: image_name
    ports:
      - "port:port"
    environment:
      - ENV_VAR=value
    volumes:
      - volume_name:/path/in/container
    networks:
      - network_name
networks:
  network_name:
    driver: bridge
volumes:
  volume_name:

3. docker-compose.ymlの具体的な書き方

3.1. サービスの定義

サービスは、アプリケーションの各コンポーネントをDockerコンテナとして定義します。以下の例では、webサービスとdbサービスを定義しています:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - app-network
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: example_db
    networks:
      - app-network
    volumes:
      - db-data:/var/lib/mysql
  • image: 使用するDockerイメージを指定します。
  • ports: ホストとコンテナのポートをマッピングします。
  • volumes: ホストとコンテナ間でファイルを共有します。
  • environment: コンテナの環境変数を設定します。

3.2. ネットワークの設定

ネットワークは、コンテナ間の通信を可能にします。docker-compose.ymlファイル内でネットワークを定義し、サービス間の通信を設定します。

networks:
  app-network:
    driver: bridge
  • driver: ネットワークの種類を指定します(デフォルトはbridge)。

3.3. ボリュームの設定

ボリュームは、コンテナのデータを永続化するために使用します。docker-compose.ymlでボリュームを定義し、サービスに割り当てます。

volumes:
  db-data:
  • db-data: ボリュームの名前を定義し、dbサービスで使用します。

4. docker-compose.ymlの活用方法

  • 開発環境の構築: 複数のサービスを迅速に構築し、開発環境を簡単にセットアップできます。
  • CI/CDパイプライン: テストやデプロイメントの際に、設定済みのサービスを一括で起動し、作業の効率化が図れます。
  • 運用管理: 本番環境のサービスを一元管理し、スケーリングやアップデートを容易に行えます。

5. まとめ

docker-compose.ymlは、複数のDockerコンテナを管理するための強力なツールです。基本的な構造を理解し、サービス、ネットワーク、ボリュームの設定を適切に行うことで、効率的な開発と運用が実現できます。この記事で紹介した具体的な書き方を参考に、自分のプロジェクトに最適なdocker-compose.ymlを作成してみてください。