Docker:无法在Dockerfile中执行RUN mkdir


116

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

步骤18:运行mkdir / var / www / app && chown luqo33:www-data / var / www / app --->在7b5854406120中运行mkdir:无法创建目录'/ var / www / app':没有这样的文件或目录

这是导致错误的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:无法创建目录'/ var / www / app':没有这样的文件或目录”听起来很荒谬-当然没有这样的目录。我要创建它。怎么了


4
顺便说一句,这里没有特定于Docker的东西-在没有它mkdir /var/www/app的系统上运行,您会遇到同样的问题/var/www
Charles Duffy 2015年

Answers:


178

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

用:

mkdir -p /var/www/app

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


感谢您指出了这一点。顺便说一句,您的意思是说会创建什么包装/var/www
luqo33

这是关于Ubuntu 14.04打包的问题。我不是那里的专家。
Charles Duffy 2015年

60

创建从不存在的父目录挂起的子目录时,必须将-p标志传递给mkdir...。请使用

RUN mkdir -p ... 

我测试了这是正确的。


17

您也可以简单地使用

WORKDIR /var/www/app

如果不存在,它将自动创建文件夹。

然后切换回您需要的目录。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.