无法在 Dockerfile 中执行 RUN mkdir

新手上路,请多包涵

这是我在构建 Docker 映像时收到的错误消息:

 Step 18 : RUN mkdir /var/www/app && chown luqo33:www-data /var/www/app
---> Running in 7b5854406120 mkdir: cannot create directory '/var/www/app': No such file or directory

这是导致错误的 Dockerfile 片段:

 FROM ubuntu:14.04
RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33

<installing nginx, fpm, php and a couple of other things>

RUN mkdir /var/www/app && chown luqo33:www-data /var/www/app
VOLUME /var/www/app
WORKDIR /var/www/app

mkdir: cannot create directory '/var/www/app': No such file or directory 听起来很荒谬——当然没有这样的目录。我想创建它。这里有什么问题?

原文由 luqo33 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

问题是 /var/www 也不存在,并且 mkdir 默认情况下不是递归的——它期望直接的父目录存在。

利用:

 mkdir -p /var/www/app

…或在 Dockerfile 中达到这一点之前安装一个创建 /var/www 的包。

原文由 Charles Duffy 发布,翻译遵循 CC BY-SA 3.0 许可协议

当创建从不存在的父目录挂起的子目录时,您必须将 -p 标志传递给 mkdir …请更新您的 Dockerfile

 RUN mkdir -p ...

我对此进行了测试,它是正确的。

原文由 Kostikas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进