CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

Apollo オープンソース アドレス:

https://github.com/ctripcorp/apollo

最初のステップ

プロジェクトをローカルにクローンし、GitHub のリリース ページから 3 つの zip ファイルをダウンロードします。

この記事では、2019年1月時点の最新バージョン1.2.0の展開方法に焦点を当てています。

ステップ2

クローンしたローカルプロジェクトを開くと、ディレクトリ構造は次のようになります。

ステップ3

このディレクトリに docker-compose.yml ファイルを作成し、次の内容を記述します。

バージョン: "3"

サービス:
 apollo-configservice: ##コンテナサービス名container_name: apollo-configservice ##コンテナ名build: apollo-configservice/src/main/docker/ ##Dockerファイルパスimage: apollo-configservice ##イメージ名ports:
   - 「9180:8080」  
  ボリューム:
   - "/opt/logs/100003171" ## ホスト環境でログを表示しやすくするために、/opt/logs/100003171 ディレクトリをホストの /Users/mobin/opt/logs/100003171 にマウントします。
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=123456

 アポロ管理サービス:
  コンテナ名: apollo-adminservice
  ビルド: apollo-adminservice/src/main/docker/
  画像: apollo-adminservice
  ポート:
   - 「9181:8090」
  依存:
   - アポロ構成サービス
  ボリューム:
   - "/opt/logs/100003172"
  環境:
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=123456

 アポロポータル:
  コンテナ名: アポロポータル
  ビルド: apollo-portal/src/main/docker/
  画像: アポロポータル
  ポート:
   - 「9182:8070」
  依存:
   - アポロ管理サービス
  ボリューム:
   - "/opt/logs/100003173"
  環境:
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloPortalDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=123456

ここで 2 つの点に注意してください。

1. ここでは、元のポート 8080、8070、8090 をそれぞれポート 9180、9181、9182 にマッピングします。これは、ポート 8080 およびその他のポートはよく使用されるポートであり、他のプロジェクトと競合する可能性があるためです。

2. mysqlの接続アドレスを変更することを忘れないでください

説明しましょう。Apollo プロジェクトで提供されている quickstart-docker スクリプトを使用しないのはなぜかと疑問に思う人もいるかもしれません。その理由は次のとおりです。

quickstart-docker では、Apollo オープンソース プロジェクト チームが、デプロイメント操作を削減するために、MySQL などの一連の構成を組み込みました。組み込みのものを使用するときは、絶対に使用しません。独自の MySQL データベースにデータを保存したいと考えています。また、quickstart-dockerはデモンストレーションの便宜を図るためのものです

ステップ4

最初のステップでダウンロードした3つのzipファイルをそれぞれ次のディレクトリにコピーします。

<1>

<2>

<3>

知らせ:

これら3つのディレクトリは、それぞれapollo-adminservice、apollo-configservice、apollo-portalサービスに対応しています。同時に、これら3つのディレクトリ内のDockerfileファイルをそれぞれ変更する必要があります。Dockerfileファイルを開きます。

ここで、Dockerfile で指定されているバージョン番号は 1.3.0-SNAPSHOT ですが、ダウンロードした zip パッケージのバージョンは 1.2.0 であることがわかります。そのため、これら 3 つの Dockerfile のバージョン番号をそれぞれ変更する必要があります。変更されたファイルは次のとおりです。

ステップ5

mysqlにログインし、以下のフォルダにあるsqlファイルをインポートしてデータベースを初期化します。

インポートが成功すると、さらに2つのデータベースが表示されます。

ステップ6

プロジェクトのapolloフォルダ全体をzipファイルにパッケージ化し、ftpまたはscpコマンドを使用してファイルをcentos7サーバーにアップロードし、サーバー上で次のコマンドを実行します。

apollo.zip を解凍します。
CD アポロ
docker-compose を起動 -d

次にコマンド出力が表示されます

これは、3 つの Docker コンテナが正常に作成されたことを意味します。

使用

ドッカーps -a

Docker サービスを表示

正常に実行されたことが分かりました。ブラウザを開いて、

http://0.0.0.0:9182

Apolloのバックグラウンド管理ページを見ることができます

ステップ7

ステップ6では、展開は完了していますが、変更が必要な箇所が2箇所あります。変更しないとエラーが報告されます。

1. アポロポータルコンテナに入る

apollo-env環境変数を変更する

ローカルメタ = http://localhost:9180
dev.meta = http://localhost:9180
fat.meta=http://localhost:9180
uat.meta = http://localhost:9180
lpt.meta=${lpt_meta}
pro.meta=http://localhost:9180

2. ApolloConfigDBデータベースのServerConfigテーブル内のeureka.service.urlフィールドを変更します。

http://localhost:9180/ユーレカ/

変更が完了したら、apolloの3つのコンテナを再起動します。

知らせ:

デフォルトのアカウントはapolloです

デフォルトのパスワード: admin

apolloにログイン後、システム情報ページを開くと、Home Page Urlがあることがわかります。dockerにデプロイしているため、ここに表示されるIPアドレスが問題です。そのIPアドレスは、Dockerコンテナ内のデフォルトのIPアドレスです。このアドレスが問題なのは、プロジェクトに統合すると、サーバーIPにアクセスするため、Dockerコンテナ内のIPアドレスにアクセスできないためです。統合すると、apollo構成を読み取れないことがわかります。

HomePageUrlを変更する公式の方法が提供されていますが、テストではまだ問題があることがわかりました

公式ソリューション

第3条では

HomePageUrl を直接変更することはお勧めしません。最善の解決策は次のとおりです。

アプリケーションに次のコードを追加します

静的{
  System.setProperty("Dapollo.configService","http://192.168.XX")
}

これで、docker を使用して CentOS7 に Apollo Configuration Center をデプロイする方法についての記事は終了です。docker に Apollo Configuration Center をデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • docker で Apollo をデプロイする詳細なチュートリアル
  • docker-compose を使用して Apollo カスタム環境をデプロイする詳細なチュートリアル

<<:  要素テーブルの多層ネスト表示の実践

>>:  MySQLクエリ書き換えプラグインの使用

推薦する

vue フロントエンド HbuliderEslint リアルタイム検証 自動修復設定

目次HBuilderX での ESLint プラグインのインストールカスタム eslint-js ル...

Vue3ルーティングVueRouter4を使用する簡単な例

ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...

IE7でソースファイルを含むページを開くとページが空白になる問題の解決方法

質問:私のブログのエンコーディングは utf-8 です。ページを開くと空白になっていることもあります...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

Node の SMS API で検証コード ログインを実装するためのサンプル コード

1. ノードサーバーのセットアップ + データベース接続ここでの操作は比較的簡単でわかりやすいです。...

要素の円弧モーションを実現する CSS3 サンプルコード

CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

Vueページジャンプの実装方法

1. this.$router.push() 1. ビュー <テンプレート> <d...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

ウェブページのアクセス速度に関する主な問題と解決策

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

JavaScriptのイベントループの仕組みの分析

目次序文: 1. イベント ループとタスク キューの理由: 2. イベントループメカニズム: 3. ...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)

静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...

Webフロントエンド開発経験の概要

XMLファイルは、可能な限りutf-8でエンコードする必要があります。gb2312には、?など、保存...

Docker で Tomcat、MySQL、Redis をインストールするための詳細な手順

目次DockerでTomcatをインストールするtomcatイメージを使用してコンテナを作成する(イ...