Dockerfile ARG替换为RUN命令中的字符串

lör*_*örf 9 bash docker dockerfile

在我的Dockerfile中,我想用字符串替换变量。

ARG w=world
RUN echo 'Hello $w'
Run Code Online (Sandbox Code Playgroud)

我希望输出为,Hello world但实际输出为Hello $w

BMi*_*tch 13

Docker 不会在 RUN 命令中扩展 ARG 值。相反,它将 ARG 作为环境变量注入。shell 本身扩展了变量,我使用的所有 Linux shell 的行为都因引用类型而异。

单引号指示 shell 不展开任何内容,您只需要转义单引号和转义字符。虽然双引号包括变量扩展以及许多其他转义字符。有关更多详细信息,请参阅 shell 上的手册页。

所以你已经找到的解决方案是:

RUN echo "Hello $w"
Run Code Online (Sandbox Code Playgroud)


lör*_*örf 5

RUN echo "Hello $w"工作正常。ARG 在双引号内解析。