Bash大括号扩展不适用于Dockerfile RUN命令

阿特斯·高拉(Ates Goral)

我在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下,而不是进行括号扩展。

我可能做错了什么?

阿特斯·高拉(Ates Goral)

您没有使用大括号扩展,因为您没有使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章