ホームページ > 運用・保守 > Docker > Docker Composeでマルチコンテナーアプリケーションを構築する方法は?

Docker Composeでマルチコンテナーアプリケーションを構築する方法は?

James Robert Taylor
リリース: 2025-03-11 16:32:19
オリジナル
606 人が閲覧しました

Docker Composeを使用してマルチコンテナーアプリケーションを構築する方法

docker Composeを使用してマルチコンテナーアプリケーションを構築する

Docker Composeでマルチコンテナーアプリケーションを構築するには、 docker-compose.yml >>>>ファイルでアプリケーションのサービスを定義することが含まれます。このファイルは、各サービスに使用する画像、公開するポート、マウントのボリューム、およびネットワーク構成を指定します。別のデータベースを使用したWebアプリケーションの簡単な例:

最初に、 docker-compose.yml ファイルを作成します:

 <pre class="brush:php;toolbar:false"> <code class="yaml">バージョン:&quot; 3.9&quot;サービス:Web:build:context:./web dockerfile:dockerfileポート: - &quot; 8080:80&quot; Depends_on:-DB DB:画像:POSTGRES:13ポート: - &quot; 5432:5432&quot;環境: -  postgres_user = myuser -postgres_password = mypassword </code> 
ログイン後にコピー

これは2つのサービスを定義します: web および db web サービスは、 ./ web ディレクトリにあるdockerfileから構築されています。ホストマシンでポート8080を公開し、コンテナのポート80にマッピングします。重要なことに、 depends_on:-db Webアプリケーションの前にデータベースが起動することを保証します。 db サービスは、事前に構築されたPostgreSQLイメージを使用し、ポート5432を公開します。 docker-compose.yml and execute:

 <code class="bash"> docker-compose up -d-build </code> 
ログイン後にコピー

-d フラグは、デタッチされたモードでコンテナを実行します(背景)。 -build フラグは、必要に応じて web サービスの画像を構築します。次に、以下を使用してコンテナを停止して削除できます。より複雑なアプリケーションには、複雑な依存関係と構成を備えた複数のサービスが含まれる場合があり、 docker-compose.yml ファイル内でより詳細な仕様が必要です。環境変数を安全に管理することを忘れないでください。潜在的に .env ファイルまたは生産環境の秘密管理ソリューションを使用してください。アプリケーション:

  • 簡略化された展開: docker-compose.yml ファイルは、アプリケーションのインフラストラクチャ全体を定義し、展開と複製を簡単にします。これにより、複数のDockerコマンドを個別に管理する必要性がなくなります。
  • 改善された開発ワークフロー:作成者が単一のコマンドでアプリケーションを簡単に開始、停止、再構築できるようにすることで開発プロセスを簡素化します。これにより、反復とデバッグが加速します。
  • 環境の一貫性:構成は、さまざまな開発システムと生産システムにわたって一貫した環境を保証します。これにより、環境間の不一致が最小限に抑えられ、展開の問題が減少します。
  • 強化されたスケーラビリティ:本質的にスケーリングソリューションではありませんが、サービスを簡単に複製し、 docker-compose.yml ファイル内でリソース制限を構成するための基礎を構成します。これにより、Kubernetesのようなオーケストレーションツールとの統合が容易になります。
  • コラボレーションの改善: Composeの宣言的性質により、チームメンバーはアプリケーションのインフラストラクチャを簡単に理解して管理できます。 docker-compose.yml ファイルは、単一の真実のソースとして機能します。
  • リソース管理: dockerコンプは、効率的なリソース割り当てを可能にし、個々のサービスのリソース制限(CPU、メモリ)を指定し、リソースの条件を防ぎます。セットアップ?

    コンテン間コミュニケーションとデータ共有

    Docker Composeは、コンテナー間のコミュニケーションとデータ共有を促進します。このネットワーク内のコンテナは、サービス名を使用して互いに通信できます。たとえば、上記の例では、 web コンテナは、ホスト名 db を使用して db コンテナにアクセスできます。これは通常、アプリケーションコード内の環境変数または構成ファイルを介して行われます。

  • 環境変数:環境変数は、あるコンテナから別のコンテナに渡すことができ、構成値を共有できます。このアプローチは、単純な構成に適しています。
  • ボリューム: dockerボリュームは、コンテナ間でデータを共有する永続的な方法を提供します。ボリュームは、 docker-compose.yml ファイルで定義し、複数のコンテナに取り付けます。これは、構成ファイル、データベース、またはその他の永続的なデータを共有するのに最適です。例:
 <code class="yaml">バージョン:&quot; 3.9&quot;サービス:web:#...ボリューム: -  shared_data:/app/data db:#... volumes: -  shared_data:/var/lib/postgresql/dataボリューム:shared_data:</code> 
ログイン後にコピー

services。

  • メッセージキュー(rabbitmq、kafkaなど):非同期通信の場合、メッセージキューは堅牢なソリューションです。 docker-compose.yml にメッセージキューサービスを含め、アプリケーションを構成して通信します。

メソッドの選択は、アプリケーションの特定のニーズに依存します。単純な構成には、環境変数または直接ネットワーク通信で十分です。永続的なデータまたは非同期通信を含むより複雑なシナリオの場合、ボリュームとメッセージキューがより適切です。

Docker Composeで構築されたマルチコンテナーアプリケーションの問題を解決するための一般的なトラブルシューティングステップは何ですか? Dockerの構成では、多くの場合、さまざまな側面を体系的にチェックすることが含まれます。
  • docker-compose.yml ファイルを確認します。単一のタイプミスは重大な問題につながる可能性があります。
  • コンテナログを調べます: docker-compose logs&lt; service_name&gt; を使用して、個々のコンテナのログを表示します。多くの場合、ログはエラーの根本原因を明らかにします。
  • コンテナステータスを検査します。エラーコードで実行されていない、またはエラーコードで終了しているコンテナを特定します。
  • ネットワーク接続の検証: ping または docker exec 。正しく機能します。リソースの疲労は、予期しない動作につながる可能性があります。
  • 再起動コンテナ:単純な再起動が一時的な問題を解決できる場合があります。 docker-compose restart&lt; service_name&gt; または docker-compose Up up up up up up up b-build -d 。 -d これにより、問題が1つのコンテナに固有のか、コンテナ間相互作用の結果であるかを判断するのに役立ちます。 Dockerは作曲します。より高度なトラブルシューティング手法については、公式のDocker Composeドキュメントを参照してください。

以上がDocker Composeでマルチコンテナーアプリケーションを構築する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート