You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker RUN mkdir -p创建目录带大括号问题解决咨询

解决Dockerfile中mkdir大括号扩展失效的问题

Docker默认的RUN命令使用sh执行,而sh不支持bash的大括号扩展语法,所以你输入的logs/{shell,security,errors}会被当作单个目录名处理,生成带大括号的目录。可以用以下几种方法修复:

  • 显式调用bash处理命令:
    将RUN命令改为:
    RUN bash -c 'mkdir -p logs/{shell,security,errors}'
    通过bash -c让bash解析大括号扩展,从而创建三个子目录。

  • 直接列出所有目标目录:
    放弃大括号语法,直接写出所有子目录路径,兼容性更强:
    RUN mkdir -p logs/shell logs/security logs/errors
    这种方式不依赖特定shell的扩展特性,在任何环境下都能正常工作。

  • 设置默认shell为bash(适合基础镜像自带bash的场景):
    在Dockerfile开头添加SHELL指令,指定后续RUN命令用bash执行:

    SHELL ["/bin/bash", "-c"]
    RUN mkdir -p logs/{shell,security,errors}
    

    这样后续所有RUN都会使用bash,大括号扩展就能正常生效了。

内容的提问来源于stack exchange,提问作者Daniel Baker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:20:29