概要
ローカルでDockerを起動する際、システム環境変数を指定するまたは環境別のプロパティファイルを指定する方法についてです。
説明はJava(SpringBoot)アプリを前提にしています。
前提
・ローカルPCのOSはWindows
・Docker build済のイメージがあること
・取得元のアプリ上でSystem.getenvが実装されていること
・Dockerのバージョンは4.9
コマンド
docker run -e "SPRING_PROFILES_ACTIVE=[each]" -e SLACK_CHANNEL=[channel] -e SLACK_TOKEN=[token] -p 8080:8080 -t [イメージ]
実行時に追加の変数を与える場合、「-e」オプションをつけます。
環境別プロパティファイル
SPRING_PROFILES_ACTIVE=[each]
[each]部分は、「application-[each].properties」に該当します。
つまり、application-prod.propertiesの場合、SPRING_PROFILES_ACTIVE=prodと指定します。
システム環境変数
上記の例ではSlackアプリとの連携用にシステム環境変数を設定しています。
■システム環境変数の設定
■実装
1 2 3 4 5 6 7 |
fun slackChannel(): String { return envValue("slack.channel") } fun slackToken(): String { return envValue("slack.token") } |
■コマンド
-e SLACK_CHANNEL=[channel] -e SLACK_TOKEN=[token]
-e オプションに対して、システム環境変数上の名称で指定します。
他の方法
ファイル上に保存して読み込む方法もありますので、気になる方は以下を参考にして下さい。
Docker Build Arguments and Environment Variables
まとめ
- 実行時の変数は「-e」オプションを指定する・
- 環境別プロパティファイルを指定する場合は、「SPRING_PROFILES_ACTIVE」を指定する。
- システム環境変数を指定する場合は、システム環境変数の名称で指定する。
参考
Spring Boot with Docker
Docker Build Arguments and Environment Variables
コメント