#author("2021-02-28T10:48:21+09:00","default:ryuichi","ryuichi")
#author("2021-02-28T10:50:45+09:00","default:ryuichi","ryuichi")
* コンテナに環境変数を渡す - docker-compose [#x844b7bb]

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



- docker-compose runは-eオプションで環境変数を指定できる
- -eオプションはDockerfileのENVより優先され、内容を上書きする

** docker-compose.ymlのenvironmentで指定する [#i9b26467]

#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]

#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
      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]

#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
      env_file:
        - test.env

$ vi test.env
  FOO=foo4

$ docker-compose up --build 
    => Building app ...
       ...
       ...
       app_1  | DEBUG: foo4

$ 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