我在Dockerfile中运行以下RUN命令,期望在每个列出的子目录下创建一个“ logs”目录:
RUN mkdir -p /opt/seagull/{diameter-env,h248-env,http-env,msrp-env,octcap-env,radius-env,sip-env,synchro-env,xcap-env}/logs
但是,当我检查图像时,我看到一个目录,其名称为“ {diameter-env,h248-env,http-env,msrp-env,octcap-env,radius-env,sip-env,synchro-env,xcap-env }”创建在/ opt / seagull下,而不是进行括号扩展。
我可能做错了什么?
您没有使用大括号扩展,因为您没有使用Bash。如果您查看RUN命令的文档:
RUN(shell形式,命令在shell中运行,在Linux上默认为/ bin / sh -c,在Windows上默认为cmd / S / C)
并且:
注意:要使用'/ bin / sh'以外的其他shell,请使用exec形式传入所需的shell。例如,RUN [“ / bin / bash”,“-c”,“ echo hello”]
因此,只需更改命令以使用exec形式并显式使用Bash shell:
RUN [ "/bin/bash", "-c", "mkdir -p /opt/seagull/{diameter-env,h248-env,http-env,msrp-env,octcap-env,radius-env,sip-env,synchro-env,xcap-env}/logs" ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句