docker-compose のインストールと使用
ここでは、docker-compose
をインストールして使用する方法を説明します。
- サンプル プロジェクト
- Docker Compose を Machine Executor と組み合わせて使用
- Docker Compose を Docker Executor と組み合わせて使用
- 関連項目
docker-compose
ユーティリティは、Machine Executors と [CircleCI コンビニエンス イメージにプリインストール][pre-installed]されています。 別のイメージを使用している場合は、以下のコードを config.yml
ファイルに追加することでアクティブ化されるリモート Docker 環境を使用して、ジョブ実行時に[プライマリ コンテナ][primary-container]にインストールできます。
- run:
name: Docker Compose のインストール
command: |
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
chmod +x ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
次に、リモート Docker 環境をアクティブ化するために、setup_remote_docker
ステップを追加します。
- setup_remote_docker
以下のステップにより、docker-compose
コマンドをビルド イメージに追加できます。
docker-compose build
または、以下のステップで、システム全体を実行できます。
docker-compose up -d
以下の例では、システム全体を起動した後、システムが実行されており、リクエストに応答していることを検証します。
- run:
name: コンテナの起動と動作検証
command: |
set -x
docker-compose up -d
docker run --network container:contacts \
appropriate/curl --retry 10 --retry-delay 1 --retry-connrefused http://localhost:8080/contacts/test
サンプル プロジェクト
GitHub の docker-compose サンプル プロジェクトで、例を参照してください。また、完全な設定ファイルを独自プロジェクトのテンプレートとして利用できます。
メモ: プライマリ コンテナは、リモート Docker とは独立した環境で動作し、両者は直接通信できません。 実行中のサービスとやり取りするためには、サービスのネットワーク内で実行する Docker とコンテナを使用します。
Docker Compose を Machine Executor と組み合わせて使用
Docker Compose を使用して docker-compose ファイルを含むマルチコンテナ セットアップを管理するには、config.yml
ファイルで machine
キーを使用し、docker-compose を通常どおりに使用します (詳細はこちらの Machine Executor に関するドキュメントを参照)。 つまり、docker-compose ファイルがコンテナとローカル ディレクトリを共有する場合、予期したとおりに機能します。 詳細については、最初の docker-compose.yml ファイルに関する Docker のドキュメントを参照してください。 メモ: プライベート Docker サーバーのスピンアップの結果として、Machine Executor をプロビジョニングするためのオーバーヘッドが存在します。 将来の料金改定では、machine
キーの使用に追加料金が必要になる可能性があります。
Docker Compose を Docker Executor と組み合わせて使用
docker
を setup_remote_docker
と組み合わせて使用すると、docker-machine を使用して作成した場合と同様のリモート エンジンを提供できます。ただし、このセットアップでは、ボリュームのマウントとポート転送は同じようには機能しません。 リモート Docker デーモンは、Docker CLI や Docker Compose とは異なるシステム上で動作するため、これを機能させるにはデータの移動が必要です。 マウントは通常、Docker ボリュームでコンテンツを利用可能にすることで解決できます。 docker cp
を使用して、CLI ホストから Docker リモート ホスト上で実行しているコンテナにデータを取得することで、Docker ボリュームにデータをロードできます。
デプロイ用の Docker イメージをビルドする場合は、この組み合わせが必要です。
関連項目
例と詳細については、「Docker コマンドの実行手順」の「フォルダーのマウント」セクションを参照してください。