在我的 Dockerfile 中,我想替换字符串中的变量。
ARG w=world
RUN echo 'Hello $w'
我希望输出是 Hello world
但实际输出是 Hello $w
最佳答案
Docker 不会在 RUN 命令中扩展 ARG 值。相反,它将 ARG 作为环境变量注入(inject)。 shell 本身会扩展变量,我使用的所有 Linux shell 都会根据引号的类型表现不同。
单引号指示shell 不展开任何内容,您只需要对单引号和转义字符进行转义即可。双引号包括变量扩展以及许多其他转义字符。有关详细信息,请参阅 shell 的手册页。
所以您已经找到的解决方案是:
RUN echo "Hello $w"
关于bash - RUN 命令中字符串中的 Dockerfile ARG 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50239236/