コンテナに環境変数を渡す - docker-compose
docker-compose runの-eオプションで指定する
vi Dockerfile
-----------------------------
FROM ubuntu
ENV "FOO" "foo1"
CMD echo DEBUG: $FOO
-----------------------------
vi docker-compose.yml
-----------------------------
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
-----------------------------
docker-compose run -e FOO=foo2 app
=> DEBUG: foo2
- docker-compose runは-eオプションで環境変数を指定できる
- -eオプションはDockerfileのENVより優先され、内容を上書きする
docker-compose.ymlのenvironmentで指定する
vi Dockerfile
-----------------------------
FROM ubuntu
ENV "FOO" "foo1"
CMD echo DEBUG: $FOO
-----------------------------
vi docker-compose.yml
-----------------------------
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- FOO=foo3
-----------------------------
docker-compose up --build
=> Building app ...
...
...
app_1 | DEBUG: foo3
- docker-compose.ymlのenvironmentで環境変数を指定できる
- environmentはDockerfileのENVより優先され、内容を上書きする
docker-compose.ymlのenv_fileで指定する
vi Dockerfile
-----------------------------
FROM ubuntu
ENV "FOO" "foo1"
CMD echo DEBUG: $FOO
-----------------------------
vi docker-compose.yml
-----------------------------
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
# environment:
# - FOO=foo3
env_file:
- test.env
-----------------------------
vi test.env
-----------------------------
FOO=foo4
-----------------------------
docker-compose up --build
=> Building app ...
...
...
app_1 | DEBUG: foo4
- docker-compose.ymlのenv_fileで環境変数を書いたファイルを指定できる
- environmentはDockerfileのENVより優先され、内容を上書きする
- env_fileとenvironmentが同時にあると、environmentが優先される
.envで指定する
vi Dockerfile
-----------------------------
FROM ubuntu
ENV "FOO" "foo1"
CMD echo DEBUG: $FOO
-----------------------------
vi docker-compose.yml
-----------------------------
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- FOO=${FOO}
# env_file:
# - test.env
-----------------------------
vi .env
-----------------------------
FOO=foo5
-----------------------------
docker-compose up --build
=> Building app ...
...
...
app_1 | DEBUG: foo5