无法在Dockerfile中执行RUN mkdir

luq*_*o33 100 docker

这是构建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
Run Code Online (Sandbox Code Playgroud)

"mkdir:无法创建目录'/ var/www/app':没有这样的文件或目录"声音如此荒谬 - 当然没有这样的目录.我想创造它.这有什么不对?

Cha*_*ffy 161

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

使用:

mkdir -p /var/www/app
Run Code Online (Sandbox Code Playgroud)

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


小智 53

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

RUN mkdir -p ... 
Run Code Online (Sandbox Code Playgroud)

我测试了这个和它的正确性


Hel*_*ate 7

您也可以简单地使用

WORKDIR /var/www/app
Run Code Online (Sandbox Code Playgroud)

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

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