Bash大括号扩展不能在Dockerfile RUN命令上工作

我在Dockerfile中运行以下RUN命令,期望在每个列出的子目录下创build一个“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下创build,而不是扩展支撑。

我可能做错了什么?

你没有使用大括号扩展,因为你没有使用Bash。 如果您查看RUN命令的文档 :

RUN(shellforms,该命令在shell中运行,默认情况下是Linux上的/ bin / sh -c或Windows上的cmd / S / C)

并且:

注:要使用不同于'/ bin / sh'的shell,请使用传入所需shell的exec表单。 例如,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" ] 
Interesting Posts