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: パッケージのバージョンに応じてバージョンを変更する必要があります 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の場所を指定します。 特記事項: 開始する前に、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* 再起動: 常に 注記: 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) を使用します。 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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL サーバー IO 100% 分析および最適化ソリューション
>>: CentOS 7 で MySQL 5.7.23 をアップグレードする際の落とし穴と解決策
コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...
目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...
ルートユーザーのパスワードを初期化するプロセスと、よくある2つの問題の解決策が含まれています。 1....
HTTP ステータス コードステータス コードは 3 桁の数字と理由フレーズ (最も一般的なもの: ...
目次序文1. batがjsを実行する2. ターミナルにバージョン番号を入力してパッケージ化コマンドを...
Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...
CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...
hk_test(ユーザー名、パスワード) に値を挿入 ('qmf1', '...
あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...
実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...
目次01. レンダリングが不要な場合はuseStateを使用する02. リンクの代わりにrouter...
目次JavaScriptでは、通常、次のコードのようにクラスを簡単に定義できます。 var サンプル...
Apple マグカップのアイコンと追加機能 HD ストレージボックス – アドオンパックセイバースノ...
目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...
1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...