コンテナに環境変数を渡す - docker-compose

docker-compose runの-eオプションで指定する

  • 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
  • .envファイルはdocker-composeコマンドを実行するディレクトリに置く
  • .envファイルに書いた環境変数をdocker-compose.ymlのenvironmentで指定する
  • 上の例ではFOO=${FOO}として.envのFOOをenvironmentのFOOに渡している

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2021-02-28 (日) 10:50:45