如何在Dockerfile中使用ARG和ENV的组合来防止替换中不支持的修饰符?



我试图使用一个例子从Docker文档上的ARG

FROM ubuntu                                                                                          
                                
ARG TEST                                                                                             
ENV TEST=${TEST:foo}                                                                                 
                                RUN echo $TEST   

Docker docs说:

本例中的变量展开技术允许您从命令行,并通过利用ENV指令将它们保存在最终映像中。

生成失败,出现以下错误:

Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu
latest: Pulling from library/ubuntu
16ec32c2132b: Pull complete 
Digest: sha256:82becede498899ec668628e7cb0ad87b6e1c371cb8a1e597d83a47fac21d6af3
Status: Downloaded newer image for ubuntu:latest
---> 1318b700e415
Step 2/4 : ARG TEST
---> Running in 4130b437fd93
Removing intermediate container 4130b437fd93
---> a31b0f8a81ff
Step 3/4 : ENV TEST=${TEST:foo}
failed to process "${TEST:foo}": unsupported modifier (f) in substitution

为什么不工作?这个错误听起来像是我和我的docker引擎之间的一个完全的误解。

OS: Ubuntu 20.04.3 LTS引擎:Docker版本20.10.8,build 3967b7d

您缺少-,它应该是:

FROM ubuntu
ARG TEST
ENV TEST=${TEST:-foo}

最新更新