Dockerコンテナオーケストレーション実装プロセス分析

Dockerコンテナオーケストレーション実装プロセス分析

実際の開発環境や本番環境では、コンテナを独立して実行することはあまりなく、複数のコンテナを一緒に実行する必要がある場合がよくあります。このとき、コンテナを起動するためにrunコマンドを使い続けると、非常に不便になります。このような場合は、docker-composeが適しています。docker composeを使用すると、コンテナオーケストレーションを実現できます。この記事では、docker-composeの使い方を見ていきます。この記事では、jpress のようなオープンソース Web サイトの展開を例に、docker-compose の使用方法を読者に紹介します。 jpress は WordPress の Java バージョンですが、jpress の実装に注意を払う必要はありません。ここでは、プロジェクトの展開を完了するために、通常のアプリケーションとして扱う必要があります。

準備

ここでは合計 2 つのコンテナーが必要です。

  • トムキャット
  • マイグレーション

次に、jpressのwarパッケージが必要です。warパッケージのアドレス: jpress

もちろん、ここでは jpress は必要ありません。読者は自分の状況に応じて、他の Java プロジェクトを選択したり、簡単な Java プロジェクト デプロイメントを記述したりすることもできます。

Dockerfileの作成

Tomcat コンテナでは、関連する war ファイルをダウンロードする必要があるため、これを行うための Dockerfile を作成します。空のフォルダーに次の内容の Dockerfile を作成します。

tomcatから
https://github.com/JpressProjects/jpress/raw/alpha/wars/jpress-web-newest.war を追加
ローカルのTomcatにWebアプリをインストールします。
実行 cd /usr/local/tomcat/webapps/ \
&& mv jpress-web-newest.war jpress.war

説明する:

  • コンテナはTomcatをベースに作成されます。
  • jpress プロジェクトの war パッケージを tomcat の webapps ディレクトリにダウンロードします。
  • jpress プロジェクトの名前を変更します。

docker-compose.ymlを書く

同じディレクトリに、次の内容の docker-compose.yml を記述します (yml の基礎知識はここでは紹介しません。読者は自分で調べることができます)。

バージョン: "3.1"
サービス:
ウェブ:
建てる: 。
コンテナ名: jpress
ポート:
- 「8080:8080」
ボリューム:
- /usr/local/tomcat/
依存:
-db
デシベル:
画像: mysql
コンテナ名: mysql
コマンド: --default-authentication-plugin=mysql_native_password
再起動: 常に
ポート:
- 「3306:3306」
環境:
MYSQL_ルート_パスワード: 123
MYSQL_DATABASE: jpress

説明する:

  • まず、Web コンテナが宣言され、次に db コンテナが宣言されます。
  • build . は、Web コンテナー プロジェクトのビルド コンテキストが . であることを意味します。つまり、Web コンテナーをビルドするために現在のディレクトリで Dockerfile が検索されます。
  • container_name はコンテナの名前を示します。
  • ポートはコンテナのポート マッピングを指します。
  • ボリュームは、コンテナを構成するデータ ボリュームを表します。
  • Depends_on はコンテナが db コンテナに依存することを意味します。起動時には db コンテナが最初に起動し、その後に web コンテナが起動します。これは単に起動のタイミングです。
  • 2 つのコンテナの順序は、Web コンテナが db コンテナが完全に起動した後にのみ起動することを意味するものではありません。
  • db コンテナの場合、Dockerfile の代わりにイメージを使用してビルドされます。
  • restart はコンテナの再起動戦略を記述します。
  • environmentはコンテナを起動するときの環境変数です。ここでは、データベースのルートユーザーのパスワードが設定され、
  • jpress ライブラリでは、環境設定は辞書と配列の形式で行うことができます。

上記の手順を実行すると、docker-compose.ymlが正常に構成されます。

走る

実行方法はいくつかありますが、究極のコマンドは up です。up コマンドは非常に強力です。イメージの構築、サービスの (再) 作成、サービスの開始、サービス関連のコンテナの関連付けなど、一連の操作を自動的に完了しようとします。ほとんどのアプリケーションはこのコマンドを通じて直接起動できます。デフォルトでは、docker-compose up によって起動されたすべてのコンテナはフォアグラウンドにあり、コンソールにはすべてのコンテナの出力情報が同時に表示されるため、デバッグに非常に便利です。Ctrl-C でコマンドを停止すると、すべてのコンテナが停止します。docker-compose up -d コマンドを使用すると、すべてのコンテナが起動され、バックグラウンドで実行されます。このオプションは通常、実稼働環境に推奨されます。したがって、docker-compose.yml が配置されているディレクトリに移動し、次のコマンドを実行します。

docker-compose を起動 -d

実行結果は次のとおりです。


実行後、docker-compose ps コマンドを通じてコン​​テナが起動したことを確認できます。

初期設定

次に、ブラウザに http://localhost:8080/jpress と入力すると、次のように jpress 構成ページが表示されます。

ガイド ページに従って、データベース接続情報と基本的な Web サイト情報を設定します。



注意: MySQL と Web は両方ともコンテナ内で実行されているため、データベース アドレスを構成するときにループバック アドレスを書き込むことはできません。そうしないと、データベースは Web が配置されているコンテナ内で見つかります。

設定が完了したら、次のコマンドを実行して Web コンテナを再起動します。

docker 再起動 jpress

テスト

以下のように、ブラウザでブログのホームページとバックエンド管理ページを表示します。


他の

コンテナを停止する場合は、次のコマンドを実行します。

docker-compose ダウン

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerコンテナが起動直後に終了する問題を解決する
  • Dockerコンテナとホスト間のデータ相互作用の概要
  • Dockerコンテナのネットワークポート設定プロセスの詳細な説明
  • Docker データボリュームコンテナの作成と使用状況分析
  • Dockerコンテナのデータボリュームの詳細な説明
  • WIN10 システムと Docker 内部コンテナ IP 間の通信方法

<<:  シンプルな虫眼鏡効果を実現するJavaScript

>>:  MySQL の自動増分主キーが使い果たされた場合の対処方法

推薦する

ブラインドの特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたブラインドの特殊効果を紹介します。効果は次のとおりです。...

Nginx で HTTPS 証明書を構成する詳細なプロセス

1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

Nginx 逆生成 Mogilefs 分散ストレージ例の詳細な説明

1. 分散ストレージシステムの概要情報技術の継続的な発展により、利便性がもたらされる一方で、データ量...

HTML マルチメディア アプリケーション: Web ページにフラッシュ アニメーションと音楽を挿入する

1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...

CSS3 パッケージ化後にプレフィックスプラグインを自動的に追加する方法の詳細な説明: autoprefixer

vue-cli で構築されたプロジェクト スキャフォールディングでは、すでに autoprefix...

Better-scrollはメニューとコンテンツをリンクする効果を実現します

1. 基本的な使い方 <!DOCTYPE html> <html lang=&qu...

フォームの送信イベントが応答しない

1. 問題の説明<br />JS を使用してフォームの送信メソッドを呼び出してフォームを...

MySql のクラッシュとサービスの起動失敗の解決策

私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...

JS におけるメモリと変数の保存についての詳細な説明

目次序文JSマジックナンバー数値の保存バイナリ変換方法なぜ 0.1 + 0.2 !== 0.3 なの...

Windows 2008 Server サブドメインを親ドメインに追加すると、ドメインが既に存在するというエラー メッセージが表示されます。

Windows 2008 Serverのサブドメインを親ドメインに参加させると、「ドメインは既に存...

aタグ内のテキストを非表示にして画像を表示するには?360モードレンダリングに対応

多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...

Debian 9 システムに MySQL データベースをインストールする方法

序文タイトルを見ると、誰もが「Debian 9 に MySQL をインストールするにはどうすればいい...

ボタンをクリックした後のCSS読み込み効果を実現する

自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...

PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

まず、MySQL バックアップ コマンド mysqldump の一般的な操作例をいくつか紹介します。...