Docker Compose を用いたマルチコンテナ・デプロイメントの方法

DockerBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、Docker Compose を使用してマルチコンテナアプリケーションを管理およびデプロイする方法を説明します。Docker Compose は、複雑な Docker ベースの環境を定義、デプロイ、および管理するプロセスを簡素化する強力なツールであり、Docker 中心のワークフローにおいて不可欠な部分です。

Docker Compose 入門

Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。宣言的な方法でアプリケーションスタックを構成およびデプロイすることで、複数の Docker コンテナの管理とオーケストレーションを簡素化します。

Docker Compose とは?

Docker Compose は、YAML ベースの構成ファイルです。マルチコンテナアプリケーションを構成するサービス、ネットワーク、ボリュームを記述します。コンテナ間の関係と依存関係を定義できるため、アプリケーションの管理とスケーリングが容易になります。

Docker Compose を使用する理由

Docker Compose を使用することで、以下の利点があります。

  1. デプロイの簡素化: 1 つのコマンドで、Compose ファイルに定義されたすべてのサービスを作成および起動できます。これにより、アプリケーションのデプロイと管理が容易になります。
  2. 一貫した環境: Compose は、開発、テスト、本番環境を一貫させるため、「私のマシンでは動作する」という問題のリスクを軽減します。
  3. スケーラビリティ: アプリケーションのニーズに応じて、個々のサービスをアップまたはダウンスケールできます。
  4. 依存関係の管理: Compose は、サービス間のネットワークとボリュームの管理を処理するため、必要に応じてサービスが相互に通信できるようにします。

Docker Compose の開始

Docker Compose を使用する前に、システムに Docker がインストールされている必要があります。Docker がインストールされたら、Compose ファイルを作成し、docker-compose コマンドラインツールを使用してアプリケーションを管理できます。

以下は、Web サービスとデータベースサービスを定義するシンプルな Compose ファイルの例です。

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password

次のセクションでは、Docker Compose を使用してマルチコンテナアプリケーションを定義およびデプロイする方法を詳しく説明します。

Defining Multi-Container Applications with Compose

Compose File Structure

The Compose file is written in YAML format and typically named docker-compose.yml. It consists of several key elements:

  1. Version: Specifies the version of the Compose file format.
  2. Services: Defines the different services (containers) that make up your application.
  3. Networks: Configures the networks that your services will use to communicate with each other.
  4. Volumes: Defines the volumes that your services will use to persist data.

Here's an example of a Compose file that defines a web service and a database service:

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

Defining Services

Each service in the Compose file represents a Docker container. You can specify various configuration options for each service, such as the Docker image to use, environment variables, ports, volumes, and dependencies on other services.

For example, the web service in the previous example uses the nginx:latest image, exposes port 80 on the container to port 8080 on the host, and depends on the db service.

Networking and Volumes

Compose automatically creates a default network for your application, allowing your services to communicate with each other. You can also define custom networks and volumes to control the connectivity and data persistence of your application.

In the example, the db service uses a named volume db-data to persist its data, ensuring that the data is not lost when the container is stopped or removed.

Scaling and Deployment

Once you've defined your Compose file, you can use the docker-compose command-line tool to manage your application. For example, you can use docker-compose up to start your application, docker-compose scale web=3 to scale the web service to three instances, and docker-compose down to stop and remove your application.

In the next section, we'll explore how to deploy and manage your Compose applications in more detail.

Compose アプリケーションの定義と管理

Compose アプリケーションのデプロイ

Compose アプリケーションをデプロイするには、以下の手順に従います。

  1. Compose ファイルの作成: アプリケーションのサービス、ネットワーク、ボリュームを docker-compose.yml ファイルに定義します。

  2. アプリケーションの起動: docker-compose up コマンドを使用してアプリケーションを起動します。これにより、Compose ファイルに定義されたすべてのサービスが作成され、起動されます。

    docker-compose up -d
    

    -d フラグは、コンテナをデタッチモードで実行します。これにより、ターミナルを継続して使用できます。

  3. ステータスの確認: docker-compose ps コマンドを使用して、実行中のサービスのステータスを確認します。

    docker-compose ps
    

Compose アプリケーションの管理

Docker Compose は、アプリケーションを管理するためのいくつかのコマンドを提供します。

  • サービスの起動/停止: docker-compose startdocker-compose stop を使用して、個々のサービスを起動または停止します。

  • サービスのスケーリング: docker-compose scale を使用して、特定のサービスのインスタンス数をスケーリングします。

    docker-compose scale web=3
    

    これにより、web サービスのインスタンス数が 3 にスケーリングされます。

  • ログの表示: docker-compose logs を使用して、アプリケーションのログを表示します。

    docker-compose logs -f
    

    -f フラグは、ログ出力をリアルタイムで追跡します。

  • アプリケーションの削除: docker-compose down を使用して、アプリケーションに関連付けられたすべてのサービス、ネットワーク、ボリュームを停止および削除します。

    docker-compose down
    

デプロイ戦略

Compose アプリケーションをデプロイする際には、さまざまな戦略を使用できます。

  1. 開発: ローカル開発およびテストに Compose を使用します。
  2. ステージング/テスト: 本番環境を反映したステージングまたはテスト環境を設定するために Compose を使用します。
  3. 本番: Compose を使用して、単一ホストまたは複数のホストのクラスタにアプリケーションをデプロイします。

デプロイ戦略に関係なく、Compose はマルチコンテナアプリケーションのライフサイクルを簡単に管理できます。

まとめ

このチュートリアルを終了すると、Docker Compose を使用してマルチコンテナアプリケーションを定義、デプロイ、管理する方法を包括的に理解しているでしょう。Compose を活用することで、Docker ベースのデプロイを効率化し、Docker 環境全体で一貫性、スケーラビリティ、管理の容易さを確保する方法を学ぶことができます。