問題
Dockerfile内で以下のように、 ENV 内で呼び出しの ARG が展開されない。
Dockerfile
FROM centos:latest
ARG FOO=foo
ENV OPTS='foo=${FOO} \
bar=bar \
hoge=hoge'
環境変数の確認結果
# env | grep ^OPTS OPTS=foo=${FOO} bar=bar hoge=hoge
原因と対処方法
- Bashでは変数をシングルクォートで囲むと文字列として認識される
- 変数を展開させたい場合は、代わりにダブルクォートを使用する
Dockerfile
$ cat Dockerfile
FROM centos:latest
ARG FOO=foo
ENV OPTS="foo=${FOO} \
bar=bar \
hoge=hoge"
環境変数の確認結果
# env | grep ^OPTS OPTS=foo=foo bar=bar hoge=hoge
参考: