Docker参数到一个RUN回显命令
作为Dockerfile的一部分,我试图修改一个文本文件(ssh_config),以包含用户(作为ARG)在构build时通过泊坞窗容器传递的variables。
在我的Dockerfile中(这不是整个文件):
ARG key_name RUN echo 'Host geoserver\n\ User user\n\ HostName 38.191.191.111\n\ IdentityFile /root/$key_name' >> /etc/ssh/ssh_config
这会收集参数key_name,然后将一些文本附加到ssh_config文本文件中。
这是运行如下:
docker build --build-arg key_name=GC -t pyramid .
当我查看已经写入的内容时,key_namevariables没有被parsing,而是被写为文本(所以字面上是$ key_name)。 显然我希望它被通过ARG传递的variablesreplace。
我已经尝试使用${key_file}
而不是$key_file
,我只是在文本文件中包含花括号的文本。
所以我的问题是,如何在RUN回声语句中正确使用ARGvariables?
首先:确保你的ARG
在你的FROM
。 请参阅: https : //docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
第二: 正如你在这里看到的 ,variables不会被解释在''
里面,所以用""
来代替。
当用单引号括住variables时,它不会被replace。
如果您需要文件中的单个qoutes包围双引号的所有内容,否则只需一起删除单引号。
ARG key_name RUN echo "'Host geoserver\n\ User user\n\ HostName 38.191.191.111\n\ IdentityFile /root/$key_name'" >> /etc/ssh/ssh_config