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

推薦する

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明注:以下のプ...

MySQL 文字セットの概要

目次文字セット比較ルール4つのレベルの文字セットと比較規則3つのシステム変数このノートは主にMySQ...

Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明

一時テーブルとメモリテーブルメモリ テーブルとは、メモリ エンジンを使用するテーブルを指します。テー...

Docker で複数のアプリケーション サイトをプロキシするために Nginx を使用する方法

序文エージェントの役割は何ですか? - 複数のドメイン名が同じサーバーに解決される- 1つのサーバー...

MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは...

Node.js+express+socket でオンラインのリアルタイム多人数チャットルームを実現

この記事では、オンラインリアルタイム多人数チャットルームを実現するためのNode.js+expres...

MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有

複数のデータベースをバックアップするには、次のコマンドを使用できます。 mysqldump -uro...

MySQLは文字列関数のSQL文をインターセプトします

1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

Windows2008 64 ビット システムでの MySQL 5.7 グリーン バージョンのインストール チュートリアル

序文この記事では、MySQL 5.7 グリーン バージョンのインストール チュートリアルを紹介します...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

MySQL関数の包括的な概要

目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...

Linux カーネル デバイス ドライバー カーネル デバッグ テクニカル ノート集

/****************** * カーネルデバッグ技術 ****************...

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...