設定ファイルではなく、環境変数から設定情報を読み取るのが一般的なシナリオがあります。 ここでは、
.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 を使用します |
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
GX_DEFAULT_DB_USER_ID=root
GX_DEFAULT_DB_PASSWORD=admin
GX_DEFAULT_DB_URL=jdbc:mysql://hostname:3306/mybdname?useSSL=false
.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 Framework と同様に動作しますが、設定は appsettings.json というファイルに格納されます。
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 にアプリケーションをデプロイする方法