マルチコンテナアプリケーションの管理
メニューを表示するにはスワイプしてください
モダンなアプリケーションを構築する際には、ウェブサーバー、データベース、キャッシュなど、複数のサービスを連携させて統合システムとして動作させる必要があります。Docker Compose を使用すると、すべてのサービス、その依存関係、および相互の連携方法を、1つの docker-compose.yml ファイルで定義できます。
docker-compose.yml における依存関係とサービスリンクの定義
docker-compose.yml では、各サービスが依存関係を宣言し、他サービスとの接続方法を指定できます。depends_on キーを使うことで、サービスの起動順序を定義でき、たとえばアプリケーションがデータベースへ接続する前にデータベースが起動していることを保証できます。また、Compose はプロジェクトごとにデフォルトネットワークを自動作成し、サービス名をホスト名としてサービス間の通信や発見を容易にします。
たとえば、ウェブアプリケーションがデータベースに依存している場合、Compose ファイルは次のようにサービスを定義します:
version: "3.8"
services:
app:
build: .
depends_on:
- db
db:
image: postgres:15
ここでは:
appサービスはdbに依存しています;- Compose はアプリケーションより先にデータベースコンテナを起動します;
- 両サービスは Compose ネットワーク内でサービス名をホスト名として相互に参照できます。
サービスのスケーリングと構成更新の戦略
Docker Compose を使うことで、サービスの水平スケーリングが容易になります。アプリケーションがより多くのトラフィックを処理する必要がある場合、--scale 実行時に docker compose up フラグを使ってサービスのコンテナ数を増やせます。
アプリケーションサービスを3インスタンス 実行するには、次のコマンドを使用します:
docker compose up --scale app=3
- このコマンドは
appサービスの 3つのコンテナ を起動します; - すべてのコンテナは同じネットワークに接続され、データベースなどのリソースを共有できます;
- スケーリング時は、サービスがステートレスであるか、複数インスタンスに適切に対応できることを確認してください。
Compose 環境での構成更新も簡単です:
docker-compose.ymlを修正します(例: 環境変数、リソース制限、サービスイメージの変更など);- 次のコマンドで変更を適用します:
docker compose up -d
- このコマンドは、構成が変更されたサービスのみを再作成し、ダウンタイムを最小限に抑えます。
Compose を用いたマルチコンテナアプリケーションの監視とトラブルシューティング
複数のコンテナを運用する際には、監視とトラブルシューティングが重要です。Docker Compose には、サービスのヘルスやログを観察するためのツールが用意されています。すべてのコンテナからの出力をリアルタイムで確認するには、次のコマンドを使用します:
docker compose logs -f
このコマンドは全サービスのログをストリーム表示し、エラーや問題を即座に発見しやすくします。特定のサービスに注目したい場合は、サービス名を指定します:
docker compose logs db
トラブルシューティングの際は、次のコマンドで稼働中のコンテナに入ることができます:
docker compose exec app sh
このコマンドで app コンテナ内のシェルにアクセスでき、ファイルの確認、診断コマンドの実行、環境変数の確認などが可能です。リソース使用状況やコンテナのヘルス監視は、docker stats などの標準 Docker ツールでも行えます。
1. docker-compose.ymlファイルで、あるサービスが他のサービスより先に起動することを保証するキーはどれか?
2. Docker Composeを使って、workerというサービスを5つのインスタンスにスケールするにはどうすればよいか?
3. Composeアプリケーションで稼働中のすべてのサービスのライブログを表示するには、どのコマンドを使うか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください