• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2021-02-25T19:41:53+09:00","default:ryuichi","ryuichi")
#author("2021-02-27T08:54:31+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
#shell(){{
$ 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