docker で Apollo をデプロイする詳細なチュートリアル

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめに

ここでは apollo について詳しく説明しません。公式サイト https://github.com/ctripcorp/apollo ではすでに非常にわかりやすく説明されています。ここでは説明しません。まだ知らない場合は、公式サイトにアクセスして詳細を確認してください。

この記事では、docker を使用して Apollo とそのクラスターをデプロイし、それを全員と共有し、自分用の記録を作成する方法を記録します。

注: 私は直接デプロイから始め、公式 Web サイトに従って自分でデータベースを作成して初期化しました。

2. ソースコードのコンパイル

2.1 ネットワーク戦略

ネットワークポリシーは公式サイトに記載されている通り、直接利用することができます。具体的には、apollo-configservice/src/main/resources/application.yml と apollo-adminservice/src/main/resources/application.yml をそれぞれ編集し、無視するネットワークカードを追加します。

次の例は、apollo-configservice の場合、docker0 および veth.* ネットワーク カードが Eureka に登録されているときに無視されることを示しています。

春:
   応用:
     名前: apollo-configservice
   プロフィール:
    アクティブ: ${apollo_profile}
   雲:
    inetutils:
     無視されるインターフェース:
      -docker0
      -veth.*

注意: application.yml を変更するときは注意し、spring.application.name などの他の情報に間違いがないようにしてください。

2.2 登録済みネットワークを動的に指定する

Dockerを使用してクラスターを構築する場合、adminserviceとconfigserviceの両方が登録センターにアドレスを登録する必要があります。登録IPが指定されていない場合、Docker内のネットワークが登録され、ネットワークが切断されます。

次のコードを apollo-configservice/src/main/resources/bootstrap.yml と apollo-adminservice/src/main/resources/bootstrap.yml に追加します。

ユーレカ:
 実例:
    IP アドレス: ${eureka.instance.ip-address}

ここでの値は環境変数から取得され、コンテナ外での構成により、デプロイメントの柔軟性が向上します。

この時点でソースコードの変更は完了しており、直接ビルドしてパッケージ化し、3 つのサービスに対応する zip パッケージを取得できます。

変更するのが面倒な場合は、変更したソースコードを https://github.com/yuelicn/apollo から直接ダウンロードして、直接パッケージ化することもできます。

3. Dockerfileの記述

Apollo の Dockerfile は非常にシンプルなので、公式 Web サイトで提供されているものをそのまま使用できます。以下は adminservice の例です。

# apollo-adminservice の Dockerfile
# ビルド:
次のコマンドを実行して、 docker build を実行します。
# 実行方法:
# docker run -p 8090:8090 -d --name apollo-adminservice apollo-adminservice

java:8-jre から
メンテナー ルイ

環境バージョン 1.5.0

apt-get install unzipを実行します

apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip を追加します。

unzip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip -d /apollo-adminservice \ を実行します。
  && rm -rf /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip \
  && sed -i '$d' /apollo-adminservice/scripts/startup.sh \
  && echo "tail -f /dev/null" >> /apollo-adminservice/scripts/startup.sh

エクスポーズ8090

コマンド ["/apollo-adminservice/scripts/startup.sh"]

注目すべきは

1: パッケージのバージョンに応じてバージョンを変更する必要があります
2: ZIPパッケージを追加するときにパスを変更する

3 つのサービスの Dockerfile ファイルは基本的に同じなので、ここでは詳細には触れません。必要な友人は https://github.com/yuelicn/docker-apollo から直接ダウンロードできます。

4 docker-compose を書く

4.1 apollo-configservice-compose.yml

バージョン: "3"
サービス:
 アポロ構成サービス:
  コンテナ名: apollo-configservice
  ビルド: apollo-configservice/
  画像: apollo-configservice
  ポート:
   - 8080:8080
  ボリューム:
   - 「/docker/apollo/logs/100003171:/opt/logs/100003171」
  環境:
   - spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloConfigDB_TEST?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=mysql2019*
   -eureka.instance.ip-address=172.11.11.11

  再起動: 常に

注意事項

1: ビルド時にDockerfileの場所を指定します。
2: 環境変数にデータベース構成情報を指定します
3: eureka.instance.ip-address は、eureka に登録されているアドレスを指定します。物理マシンのイントラネット アドレスを使用するのが最適です。

特記事項: 開始する前に、ApolloConfigDBデータベースのServerConfigのeureka.service.url値を特定のIPに変更することをお勧めします。
起動する:

docker-compose -f apollo-configservice-compose.yml をアップ --build -d

4.2 apollo-adminservice-compose.yml

apollo-adminservice-compose.yml の内容は基本的に apollo-configservice-compose.yml と同じなので、ここでは一つ一つ説明しません。

4.3 アポロポータルコンポーズ.yml

バージョン: "3"
サービス:
 アポロポータル:
  コンテナ名: アポロポータル
  ビルド: apollo-portal/
  画像: アポロポータル
  ポート:
   -8070:8070
  ボリューム:
   - 「/docker/apollo/logs/100003173:/opt/logs/100003173」
   - "/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties"
  環境:
   - spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloPortalDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=mysql2019*
   

  再起動: 常に

注記:
1: 以下は基本的に上記のconfigserviceと同じであることに注意してください
2: 特記事項は重要です!重要!重要!重要!重要!ボリューム:私は
apollo-env.properties ファイルはコンテナの外部にマップされます。独自の apollo-env.properties ファイルを設定したら、独自のマウント アドレスを入力し、コロンの前のアドレス「/apollo-portal/config/apollo-env.properties」を独自のものに変更します。この設定ファイルは起動前に指定する必要があります。
起動する

docker-compose -f apollo-configservice-compose.yml をアップ --build -d

4.3.1 アポロ環境プロパティ

ローカル.meta = http://localhost:8080
dev.meta = ${dev_meta}
fat.meta=${fat_meta}
uat.meta = ${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

独自のメタアドレスを設定します。メタアドレスがない場合は、直接削除できます。わからない場合は、公式 Web サイトにアクセスして詳細を確認してください。環境が設定されたら、対応するデータベースの ApolloPortalDB.ServerConfig の apollo.portal.envs 値を変更し、設定した環境を入力します。それ以外の場合は、ポータル管理ページでデフォルトの開発環境のみが表示されます。

5 docker-compose.ymlを完成させる

一つずつ始めるのが面倒な場合は、完全な作成を使用して開始することもできます。

バージョン: "3"
サービス:
 アポロ構成サービス:
  コンテナ名: apollo-configservice
  ビルド: apollo-configservice/
  画像: apollo-configservice
  ポート:
   - 8080:8080
  ボリューム:
   - 「/docker/apollo/logs/100003171:/opt/logs/100003171」
  環境:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=Tusdao@xx*
   -eureka.instance.ip-address=172.11.11.11
  再起動: 常に

 アポロ管理サービス:
  コンテナ名: apollo-adminservice
  ビルド: apollo-adminservice/
  画像: apollo-adminservice
  ポート:
   -8090:8090
  ボリューム:
   - 「/docker/apollo/logs/100003172:/opt/logs/100003172」
  環境:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=Tusdao@xx*
   -eureka.instance.ip-address=172.11.11.11
  依存:
   - アポロ構成サービス

  再起動: 常に

 アポロポータル:
  コンテナ名: アポロポータル
  ビルド: apollo-portal/
  画像: アポロポータル
  ポート:
   -8070:8070
  ボリューム:
   - 「/docker/apollo/logs/100003173:/opt/logs/100003173」
   - 「/Apollo/docker-image/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties」
  環境:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloPortalDB?characterEncoding=utf8
   -spring_datasource_username=ルート
   -spring_datasource_password=Tusdao@xx*
  依存:
   - アポロ管理サービス
  再起動: 常に

注: 変更が必要な箇所は基本的に単一の場合と同じなので、ここでは詳細には触れません。

この時点で、Apoll の docker デプロイメントは基本的に完了しています。完全な docker デプロイメント ファイルが必要な場合は、https://github.com/yuelicn/docker-apollo にアクセスしてください。

6 クラスター構築

Apollo クラスターの構築は非常に簡単です。2 か所を変更するだけです。説明には正式な環境 (pro) を使用します。
pro環境ではadminserviceとconfigserviceを2セット構築し、データベースは同じApolloConfigDBです。

1: ServerConfig に eureka.service.url 値と eureka 接続情報をカンマで区切って記述します: http://IP-1:port/eureka、http://IP-2:port/eureka

2: apollo-env.properties で対応する環境の接続情報を変更します (例: pro.meta=http://IP-1:port,http://IP-2:port)。アドレスはカンマで区切ることができます。

その後、サービスを再起動すれば完了です。

最後に、adminservice と configservice は、データベースを含む各環境に個別にデプロイする必要があることを強調します。展開する必要があるポータルのセットは 1 つだけです。

OK! 完了。上記は私の個人的なビルド記録です。お役に立てれば幸いです。間違っている点があればご指摘ください。

変更されたソースコードアドレス: https://github.com/yuelicn/apollo

組織化された Docker-Apollo: https://github.com/yuelicn/docker-apollo

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

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

<<:  MySQL サーバー IO 100% 分析および最適化ソリューション

>>:  CentOS 7 で MySQL 5.7.23 をアップグレードする際の落とし穴と解決策

推薦する

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...

実際のプロジェクトでElementUIを使用する手順の詳細な説明

目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...

Windows プラットフォーム構成 5.7 バージョン + MySQL データベース サービス

ルートユーザーのパスワードを初期化するプロセスと、よくある2つの問題の解決策が含まれています。 1....

サーバーから返される14の一般的なHTTPステータスコードの詳細な説明

HTTP ステータス コードステータス コードは 3 桁の数字と理由フレーズ (最も一般的なもの: ...

Nodejs は readline を使用してコンテンツ入力を促すサンプルコード

目次序文1. batがjsを実行する2. ターミナルにバージョン番号を入力してパッケージ化コマンドを...

Nginx を使用して IP アドレスが悪意を持って解決されるのを防ぐ方法

Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...

CSSの省略記号とパディングを組み合わせた場合の問題の詳細な説明

CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...

MySQLテーブル内の重複データをクエリする方法

hk_test(ユーザー名、パスワード) に値を挿入 ('qmf1', '...

Linux でジャンクファイルをエレガントに削除する方法

あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...

カスタムスクロールバー効果を実現するJavaScript

実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...

フックを使用して React コンポーネントを書くときに注意すべき 5 つの点

目次01. レンダリングが不要な場合はuseStateを使用する02. リンクの代わりにrouter...

JavaScript インスタンス オブジェクトでプロトタイプ メソッドをオーバーライドする方法の詳細

目次JavaScriptでは、通常、次のコードのようにクラスを簡単に定義できます。 var サンプル...

シェアしたい絶妙なApple風無料アイコン素材18セット

Apple マグカップのアイコンと追加機能 HD ストレージボックス – アドオンパックセイバースノ...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

VMware での Ubuntu Docker のインストール (コンテナ構築)

1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...