Springboot プロジェクトに動的にパラメータを渡すための Docker の実装方法

Springboot プロジェクトに動的にパラメータを渡すための Docker の実装方法

背景

最近、Docker 初心者の友人から、毎回プロジェクト構成ファイルにハードコーディングしてサービス イメージをビルドし、一連のプロセスを経てパッケージ化して公開し、構成を更新するのではなく、 docker-compose.ymlを介してマイクロサービスにパラメーターを動的に渡したいと尋ねられました。 そのため、いくつかの構成項目をdocker-compose.ymlの環境変数に直接入れて、springboot プロジェクトが環境変数からパラメーターを自動的に取得することは可能ですか?

シナリオ

データベース構成項目を含む Springboot プロジェクトがあり、異なるデータベース テスト環境 (DEV\SIT\UAT) に複数のデータベース IP があるとします。同じ Springboot プロジェクト イメージを使用する場合は、いつでもデータベース構成を切り替えることができます。つまり、Springboot アプリケーションのデータベース構成は、ハードコードされるのではなく、外部から渡す必要があります。


Springboot アプリケーションには次のようなデータベース構成があります。

spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
#データベースユーザー名を設定する spring.datasource.username = sa
#データベースパスワードを設定する spring.datasource.password = sa

解決

SpEL式を使用して環境変数からデータベース構成を動的に取得する


次に、Springboot構成ファイル内のspEL式でデータベース構成を置き換えます。

# データベースリンクを構成する spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8
#データベースユーザー名を設定します spring.datasource.username = ${DB_USER}
#データベースパスワードを設定する spring.datasource.password = ${DB_PASSWORD}

docker-compose.ymlでデータベースパラメータを設定する

バージョン: '3'
サービス:
 ウェブ:
  再起動: 常に
  依存:
   -db
  イメージ: springboot-app-image
  建てる: 。
  ポート:
   - 8080:8080
  環境:
   - DB_HOST=192.168.0.11
   - DB_PORT=3306
   - DB_USER=ルート
   - DB_パスワード=123456
   - DB_NAME=db
  ネットワーク:
   - クレジットファシリティネット
  展開する:
   モード: 複製
   レプリカ: 3
   再起動ポリシー:
    条件: 失敗時
    遅延: 5秒
    最大試行回数: 3
   アップデート構成:
    並列処理: 1
    遅延: 10秒

このようにして、Springbootアプリケーションはコンテナサービスを起動するときにデータベース構成を動的に取得できます。

Docker が Springboot プロジェクトに動的にパラメータを渡す方法についてはこれで終わりです。Docker Springboot の動的パラメータ渡しの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Spring Boot フロントエンドとバックエンドのパラメータ送信の実装

<<:  Vue の計算プロパティとプロパティリスニングについての簡単な説明

>>:  MySQLデータ行と行オーバーフローのメカニズムの詳細な説明

推薦する

W3C チュートリアル (15): W3C SMIL アクティビティ

SMIL は、Web にタイミングとメディアの同期のサポートを追加します。 SMIL は、Web に...

JavaScript 遅延読み込みの詳細な説明

目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...

Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法

1. 原因公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

MySQL 文字セットの表示と変更のチュートリアル

1. 文字セットを確認する1. MYSQLデータベースサーバーとデータベースの文字セットを確認する方...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

tomcat8の最新のLinuxインストールプロセス

ダウンロード参考:ダウンロードするコアパッケージを選択してくださいダウンロード後、ファイルをサーバー...

Windows 8.1 で MySQL5.7 のルート パスワードを忘れた場合の解決方法

【背景】最近勉強中に非常に恥ずかしいことに遭遇しました。MySQL のパスワードを忘れてしまい、My...

素晴らしい CSS ナビゲーション バーの下線効果

中国初のカッター github.com/chokcocoまず、ここに画像があります。純粋な CSS ...

TypeScript 開発のための 6 つの実用的なヒント

目次1. 開発前にエンティティの種類を決定する2. インターフェースをリクエストするときは、使用する...

CocosCreator でカメラトラッキングに cc.follow を使用する方法

Cocos Creator バージョン: 2.3.4デモのダウンロード: https://files...

vue-cli4.5.xはプロジェクトを素早く構築します

1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...

Dockerイメージをパッケージ化し、リモートサーバーにプッシュしてk8sにデプロイする方法

目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...