最近のアクセス:
.NET および Java における環境変数を使用したアプリケーション設定

設定ファイルではなく、環境変数から設定情報を読み取るのが一般的なシナリオがあります。  ここでは、.NET および Java ジェネレーターでこれを行う方法を説明します。 
アプリケーションの各設定のエントリーは、環境変数から読み取ることができます。この環境変数は、先頭に「GX_」を付けて、すべて大文字で指定する必要があります。
例:
名前 環境変数 (.NET) 環境変数 (JAVA)
Database Name GX_CONNECTION-DEFAULT-DB 該当しません。代わりに GX_DEFAULT_DB_URL を使用します
Connection endpoint GX_CONNECTION-DEFAULT-DATASOURCE
GX_DEFAULT_DB_URL
例: 
  • jdbc:mysql://hostname:3306/mybdname?useSSL=false
Connection username GX_CONNECTION-DEFAULT-USER GX_DEFAULT_USER_ID
Connection password GX_CONNECTION-DEFAULT-PASSWORD GX_DEFAULT_USER_PASSWORD
Connection port GX_CONNECTION-DEFAULT-PORT 該当しません。代わりに GX_DEFAULT_DB_URL を使用します
 

環境変数によるデータベース設定の例 (.NET)

GX_CONNECTION-DEFAULT-DB=test
GX_CONNECTION-DEFAULT-DATASOURCE=mysql8
GX_CONNECTION-DEFAULT-USER=root
GX_CONNECTION-DEFAULT-PASSWORD=admin
GX_CONNECTION-DEFAULT-PORT=3307

環境変数によるデータベース設定の例 (JAVA)

GX_DEFAULT_DB_USER_ID=root
GX_DEFAULT_DB_PASSWORD=admin
GX_DEFAULT_DB_URL=jdbc:mysql://hostname:3306/mybdname?useSSL=false
 

.NET Framework

.NET Framework の場合は、web.config での定義と同じように変数を呼び出します。
本番データベースを参照する Web アプリケーションが組み込まれた Docker イメージ (environmenttest.netenvironment) があるとします。ここで、テストデータベース (EnvTest) を参照する、そのイメージのインスタンスを呼び出します。そのためには、次のコマンドを実行します:
docker run --rm -e GX_CONNECTION-DEFAULT-DB=EnvTest environmenttest.netenvironment
フラグ -e は環境変数 GX_Connection-Default-DB (web.config での定義と同じ名前) を EnvTest に設定します。アプリケーションが起動し、プロパティ値の読み取りが必要になると、まずこの名前の環境変数があるかどうかを確認します。存在する場合は、その値を取得します。
同じイメージ (environmenttest.netenvironment) を本番用データベース (EnvProd) に対して呼び出す場合は、次のコマンドを実行します:
docker run --rm -e GX_CONNECTION-DEFAULT-DB=EnvProd environmenttest.netenvironment
web.config の設定プロパティについても同じです。設定プロパティを探すたびに、アプリケーションはまずこの名前の環境変数を検索します。
 

.NET 

.NET は .NET Framework と同様に動作しますが、設定は appsettings.json というファイルに格納されます。

Java

Java の場合は、仕組みが異なる client.cfg (セクションあり) を使用するため、動作が少し違ってきます。
たとえば、com.environmenttest|DEFAULT (環境の既定の DBMS) というセクションがあり、DBMS への URL を持つ次の DB_URL エントリーがあるとします。 
jdbc:jtds:sqlserver://172.16.3.21:1435/EnvProd
この値を変えるには、セクションとプロパティを連結する環境変数を作成し (すべて大文字)、ドット (".") とパイプ ("|") を下線 ("_") に変える必要があります。たとえば、変数 GX_COM_ENVIRONMENTTEST_DEFAULT_DB_URL を作成する場合は、client.cfg の値を上書きします。この変数の値は、アプリケーションが処理する値になります。
次のように、名前空間を指定せずに変数を作成することもできます: GX_DEFAULT_DB_URL。
この場合、この変数でコンテナを起動するには、次のコマンドを実行してテストデータベースに接続する必要があります:
docker run --rm -p 8890: 8080 -e GX_DEFAULT_DB_URL=jdbc:jtds:sqlserver://172.16.3.21:1435/EnvTest environmenttestjavaenvironment
本番用データベースの場合は次を実行します:
docker run --rm -p 8890: 8080 -e GX_DEFAULT_DB_URL=jdbc:jtds:sqlserver://172.16.3.21:1435/EnvProd environmenttestjavaenvironment
既定のデータストアで DB_URL 環境変数を検索する際には、次の環境変数が検索の対象になります:
GX_COM_ENVIRONMENTTEST_DEFAULT_DB_URL 
このエントリーの値が見つからなかった場合、検索の対象は GX_DEFAULT_DB_URL になります。 
AWS MYSQL の例
docker run --rm -p 8890: 8080 -e GX_DEFAULT_DB_URL=jdbc:mysql://myrdsname.us-east-1.rds.amazonaws.com/mybdname?useSSL=false

参考情報

環境変数を使用したアプリケーション設定
クラウドサービスにおける環境変数を使用したアプリケーション設定
Docker にアプリケーションをデプロイする方法
   

サブページ
Created: 23/04/24 18:13 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0