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データ行と行オーバーフローのメカニズムの詳細な説明

推薦する

IIS7 IIS8 リバースプロキシルールの記述、インストール、構成方法

目的: ステーションAをステーションBのセカンダリディレクトリとして扱うのように: http://w...

VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...

MySQL 5.7 スレーブノードからマルチスレッド マスター スレーブ レプリケーションを構成する方法の詳細な説明

序文MySQL は MySQL 5.6 からマルチスレッド レプリケーションをサポートしていますが、...

JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)

序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

JavaScript配列重複排除の詳細な説明

目次1. アレイ重複排除2. 配列内のオブジェクトの重複排除3. 配列内の同じフィールドに基づいて別...

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

ポップアップウィンドウの上下中央左右と透明な背景のロックウィンドウ効果を実現する CSS

クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...

Linux ファイアウォールの状態確認方法の例

Linuxファイアウォールの状態を確認する方法1. 基本操作 # ファイアウォールのステータスを表示...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...

CSS のオーバーフロー:hidden エラーの解決方法

失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...

ウェブフォーム送信方法の詳細な概要

まず、フォームを送信するいくつかの方法を見てみましょう。 1. <!--一般的な送信ボタン--...

手書きの Vue2.0 データハイジャックの例

目次1: webpackをビルドする2. データハイジャック3: まとめ1: webpackをビルド...

Linuxフラッシュのインストール方法

Linuxにフラッシュをインストールする方法1. Flashの公式サイトにアクセスし、ダウンロードを...