かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

docker-compose.yml で定義した変数を Dockerfile に渡したい

docker-compose.yml は環境変数.env からよしなに取ってこれるので、同じ環境変数を Dockerfile に渡したいときのメモ。(すぐ忘れるからこれだけ書き残しておく)

build 内に arg: で定義した変数を Dockerfile 内で改めて ARG 変数名 とすれば OK

.env

MY_SECRET=secret

docker-conpose.yml

version: "3"
services:
  mycontainer:
    build:
      context: './docker/my-container'
      dockerfile: "Dockerfile"
      # Dockerfile に渡す変数
      arg:
        # .env の MY_SECRET を SECRET として渡す
        - SECRET=${MY_SECRET}

./docker/my-container/Dockerfile

FROM: some-container:lasted
# 渡された変数を ARG を使って明示的に定義
ARG SECRET
# 変数を出力
echo "SECRET = ${SECRET}"

👇 ビルドして SECRET = echo ${SECRET}SECRET = secret と表示されれば OK

$ docker compose build
… 略
=> CACHE [n/n] SECRET = secret

おわり₍ ᐢ. ̫ .ᐢ ₎


[参考]

https://chaika.hatenablog.com/entry/2022/07/25/083000