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

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS