dotenv と Dockerfile と docker-compose.yml に環境変数設定するとどうなるか
公式的にはこう https://docs.docker.jp/compose/environment-variables.html
複数のファイルで同じ環境変数がある場合、Compose は使用する値を選ぶため、以下の優先度で使います。
- Compose ファイル
- シェル環境変数
- 環境変数ファイル
- Dockerfile
- 変数が定義されていない
env | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
docker-comopse の environment | o | ||||
docker-comopse の environment に key だけ指定 | o | ||||
docker-comopse の env_file | o | o | o | ||
Dockerfile | o | o | o | o | |
.env | o | o | o | o | o |
$ docker-compose up
Attaching to env_sample-sample-1
env_sample-sample-1 | ****************************************************************************************************
env_sample-sample-1 | before Dotenv.load
env_sample-sample-1 | SAMPLE1: environment
env_sample-sample-1 | SAMPLE2: .env
env_sample-sample-1 | SAMPLE3: .env_file
env_sample-sample-1 | SAMPLE4: dockerfile
env_sample-sample-1 | SAMPLE5:
env_sample-sample-1 | ****************************************************************************************************
env_sample-sample-1 | after Dotenv.load
env_sample-sample-1 | SAMPLE1: environment
env_sample-sample-1 | SAMPLE2: .env
env_sample-sample-1 | SAMPLE3: .env_file
env_sample-sample-1 | SAMPLE4: dockerfile
env_sample-sample-1 | SAMPLE5: .env
> bundle exec ruby sample.rb
****************************************************************************************************
before Dotenv.load
SAMPLE1:
SAMPLE2:
SAMPLE3:
SAMPLE4:
SAMPLE5:
****************************************************************************************************
after Dotenv.load
SAMPLE1: .env
SAMPLE2: .env
SAMPLE3: .env
SAMPLE4: .env
SAMPLE5: .env