Docker Compose ファイルを構築するにはどうすればいいですか?

Docker Compose ファイルを構築するにはどうすればいいですか?

[51CTO.com クイック翻訳] Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。つまり、複数の Docker コンテナの実行を必要とするサービスを定義する必要がある場合は、Docker Compose が適切なツールになる可能性があります。

しかし、Docker Compose はどのように使用すればよいのでしょうか? Docker デーモンをインストールしたら、コンテナ化されたアプリケーションをどのようにデプロイしますか? Docker Compose は docker-compose.yml ファイルに依存しています (このファイルは Dockerfile と連携して動作します)。

基本的な Docker Compose ファイルを自分で構築する方法を理解できるように、できるだけ簡単に説明します。

あなたは何が必要ですか?

必要なのは以下のものだけです:

  • Docker と docker-compose のインスタンスが実行されているサーバー。
  • Docker グループに属するユーザー。

Docker Compose はどのように機能しますか?

簡単に言うと、Docker Compose は完全なサービスを実行するために一連のアプリケーションを構築します。 docker-compose.yml ファイルは複数のセクションに分かれており、各セクションはコンテナを表し、各コンテナは他のコンテナと組み合わせてサービスを作成します。たとえば、次の 2 つのセクションを含む docker-compose.yml ファイルがあるとします。

  • web - アプリケーションの Web サーバー部分。
  • db - アプリケーションのデータベース サーバー部分。

各パーツは異なるコンポーネントで構成されています。また、非常に特殊な Web パーツが必要になる場合もあるため、docker-compose に Dockerfile で Web パーツを定義するように指示することができます。実際、docker-compose を使用すると、複数の Dockerfile を組み込んで非常に複雑なスタックを構築できます。しかし、簡単に始められるように、非常にシンプルなスタックを構築します。

そこで、Web 部分と db 部分の両方を含む docker-compose.yml ファイルを作成しましょう。 NGINX と MySQL を使用して、開発目的で使いやすいスタックを作成します。

  1. docker-compose.yml ファイル

まず最初に、新しいファイルを作成します。このファイルは、先ほど作成したディレクトリに作成されます。 mkdir ~/docker-build コマンドを実行します。 cd ~/docker-build コマンドを使用して、新しく作成したディレクトリに切り替えます。そのディレクトリに入ったら、次のコマンドで新しい docker-compose.yml ファイルを作成します。

  1. ナノ docker-compose.yml

これは YAML ファイルなので、形式が一貫している必要があることに注意してください (そうでない場合、ビルドは失敗します)。

最初に行うことは、ファイルにタイトルを追加することです。ファイルの先頭に次の内容を追加します。

  1. バージョン: '3'  

これにより、Docker Compose にツールのバージョン 3 を使用していることが通知されます。次の行では、Docker Compose に、次のサービスがデプロイされることを指示します。これは次のように定義されます:

  1. サービス:

これまでのファイルは次のとおりです:

  1. バージョン: '3'    
  2. サービス:

最初に定義する部分は、スタックの Web 部分です。これは、2 行の簡単なコードで実行できます。

  1. ウェブ:  
  2. 画像: nginx

上記では、公式の Nginx イメージを使用してコンテナをデプロイするように Docker Compose に指示しました。このコンテナに対して特別なことは何もしていません。それは非常に基本的なことです。

次の部分はデータベースを定義することです。この部分は、データベースが適切に実行されるように必要なパラメータを構成する必要があるため、少し複雑です。まずこの部分を定義しましょう:

  1. デシベル:

次に、次のようにして、Docker Compose にこのデータベースの MySQL イメージを使用するように指示します。

  1. 画像:mysql

ここで、データベースが使用する外部ポートと内部ポートを定義します。この目的のために、デフォルトの MySQL ポートを使用して定義します。

  1. ポート:  
  2. - 「3306:3306」  

最後にデータベース環境を構成します。環境とは、データベースの構成オプション (パスワード、ユーザー名、データベース名) です。この部分は次のようになります:

  1. 環境:
  2.  
  3. - MYSQL_ROOT_PASSWORD=パスワード1  
  4. -MYSQL_USER=ユーザー   
  5. -MYSQL_PASSWORD=パスワード2  
  6. -MYSQL_DATABASE=データベース 

で:

  • password1 は MySQL 管理者ユーザーのパスワードです。
  • ユーザーは新しい MySQL ユーザーです。
  • password2 は新しい MySQL ユーザーのパスワードです。
  • database は使用するデータベースの名前です。

上記の各項目は、あなたが定義します。スタックを安全に保つために、一意で強力なパスワードを使用するようにしてください。

ファイルをまとめると次のようになります。

  1. バージョン: '3'  
  2.  
  3. サービス:
  4.  
  5. ウェブ:
  6.  
  7. 画像: nginx
  8.  
  9. デシベル:  
  10. 画像: mysql
  11.  
  12. ポート:  
  13. - 「3306:3306」  
  14.  
  15. 環境:  
  16. - MYSQL_ROOT_PASSWORD=パスワード   
  17. -MYSQL_USER=ユーザー   
  18. -MYSQL_PASSWORD=パスワード   
  19. -MYSQL_DATABASE=デモデータベース

ファイル構造は一貫している必要があるため、インデントには注意してください。

ファイルを保存して閉じます。

Docker Compose を使用したアプリケーションの構築

docker-compose.yml ファイルが準備できたので、アプリケーションをビルドします。これは非常にシンプルなアプリケーションなので、基本的には Web サーバーとデータベースの 2 つのコンテナーをデプロイします。これら 2 つのコンテナーをどのように使用するかはあなた次第です。もちろん、独自のイメージ (シームレスに連携して独自のサービスやアプリケーションを作成するカスタム Nginx イメージや MySQL イメージなど) を開発することもできます。この記事では、デフォルトの画像(デモンストレーション目的)を使用します。

次に、スタックをビルドするには、ターミナル ウィンドウに戻り、ビルド ディレクトリにいることを確認して、次のコマンドを実行します。

  1. docker-compose を起動する

上記のコマンドは、Web コンテナと db コンテナをデプロイします。このコマンドを単独で実行すると、コンテナはアタッチ モードでデプロイされ、bash プロンプトに戻りません。デタッチドモードで実行する場合は、次のコマンドを実行します。

  1. docker-compose を起動 -d

実行が完了すると、コンテナ ID がリストされます (図 A)。


図A: コンテナの実行

コンテナが実行されていることを確認するには、次のコマンドを実行します。

  1. docker-compose ps

コンテナの名前、コマンド、ステータス、ポートがリスト表示されます (図 B)。


図B: docker-compose psコマンドの出力

おめでとうございます。Docker Compose を使用して最初のコンテナ「スタック」をデプロイしました。はい、この例は非常に単純ですが、長く充実した旅の始まりとなるはずです。次回は、Dockerfile と連動して実行される、より複雑な docker-compose.yml ファイルを作成します。

原題: Docker Compose ファイルの作成方法、著者: Jack Wallen

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  ベテランプログラマーによる長年のまとめ: Kafka の高スループットの理由を解明

>>:  Kubernetes の混乱から熟練へ: クラスター サービスの 3 つの重要なポイントと 1 つの実装

推薦する

テンセントカンファレンスの拡大の裏側:100万コアのコンピューティングリソースはすべて自社開発のサーバー星星海によって支えられている

パンデミックの間、リモート会議や共同作業の需要が急増しました。 1月29日から2月6日まで、Tenc...

Weiboマーケティングプロセスにおけるコンテンツの選択と公開

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...

クロス財務分析と会計ゼロタッチBaidu「コア」

友人がこのタイトルを見たら、きっとショックを受けるでしょう。どうしてこのような大手上場企業が核心的な...

動的なウェブページを静的なウェブページに変換するにはソフトウェアプログラムに頼るだけでは不十分です。

多くのウェブマスターの心の中では、動的なウェブページを静的なウェブページに変換するのは非常に簡単です...

ウェブサイトを高速化する3つのヒント - サーバー

統計がこれを証明しています。Web ページの読み込みに 4 秒以上かかると、25% のユーザーが諦め...

SEO は死んだのか? SEO の今後の方向性は?

「Forbes: SEO は終わり、ソーシャル リアルタイム コンテンツが人気」という記事があります...

VMwareのサービス定義ファイアウォールは各仮想マシンに合わせてカスタマイズされており、セキュリティは受動的ではなくなります。

[51CTO.com からのオリジナル記事] ビッグデータとクラウドコンピューティングの応用により、...

SEO 担当者はどうすれば問題解決能力を向上させることができるでしょうか?

ウェブサイトの最適化は不安定なため、ウェブサイトの最適化担当者は突然の問題に直面することがよくありま...

Baidu 統計ツール ページ変換設定 使用方法チュートリアル

データ統計の重要性については、これまでの多くの記事で触れてきました。今日と今後の記事では、必要ないく...

分散 KVM とは何かを理解するための分散 KVM システム アーキテクチャ図

[[314761]] ご存知のとおり、コマンド センター、コントロール センターなどのシナリオでは、...

勤勉なSEO担当者が上司に記事のランキングを上げる方法を教える

昨年6月28日以降、百度の度重なるアルゴリズム変更により、すべてのサイトが打撃を受け、仕事を探すしか...

ウェブページのランキングが突然消えた原因の分析

私は SEO の仕事でこのような問題に遭遇しました。新しいサイトが最初のうちは非常に高い順位にランク...

Shouzhuan126.comでXiong Zhangアカウントを申請する際に遭遇したさまざまな奇妙な問題、新しいサイトにとって必読

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますBaidu...

ステーションBはもはや反乱を起こさない

2016年10月10日、 Bステーションの「萌え」祭り。この日、ビリビリ待望の「プレミアム会員」制度...

企業サイトに必要な条件を分析し、コンバージョン率を迅速に向上

企業ウェブサイトのコンバージョン率が比較的低いことは、現在ほとんどの企業が直面している共通の問題であ...