#author("2021-02-25T09:43:00+09:00","default:ryuichi","ryuichi")
* コンテナに環境変数を渡す - docker-compose [#x844b7bb]

** docker-compose runの-eオプションで指定する [#pd81838e]

 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で指定する [#i9b26467]

 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で指定する [#z1599f83]

 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で指定する [#s37ddb32]

 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