作为Dockerfile的一部分,我正在尝试修改一个文本文件(ssh_config),以包含用户在构建时通过docker容器传递的变量(作为ARG)。
我的Dockerfile如下(这不是整个文件):
当我检查所写的内容时,key_name变量未被解析,而是作为文本(因此文字上显示为$key_name)被写入。显然,我希望它被替换为通过ARG传递的变量。
我尝试使用
因此,我的问题是,在RUN echo语句中如何正确使用ARG变量?
我的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_name变量未被解析,而是作为文本(因此文字上显示为$key_name)被写入。显然,我希望它被替换为通过ARG传递的变量。
我尝试使用
${key_file}
而不是$key_file
,但我只得到相同的文本文件,其中包括花括号。因此,我的问题是,在RUN echo语句中如何正确使用ARG变量?
ARG
在哪里?在FROM
的内部还是外部?(是的,这很重要)。此外,请尝试从你的echo
中删除'
。 - Munchkin