Docker:DockerfileでRUN mkdirを実行できません


116

これは、Dockerイメージをビルドするときに表示されるエラーメッセージです。

ステップ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:ディレクトリ '/ var / www / app'を作成できません:そのようなファイルまたはディレクトリはありません」は意味がありません-もちろんそのようなディレクトリはありません。作りたいです。ここで何が問題になっていますか?


4
ここでは、Docker固有のものは何もありません。mkdir /var/www/appシステムなしでは実行できなかったシステムで同じ問題が発生/var/wwwします。
Charles Duffy

回答:


178

問題は、/var/wwwこれも存在せずmkdir、デフォルトでは再帰的でないことです。これは、直接の親ディレクトリが存在することを期待しています。

使用する:

mkdir -p /var/www/app

...または/var/www、Dockerfileのこの時点に到達する前に作成するパッケージをインストールします。


これを指摘してくれてありがとう。ちなみに、どのパッケージを作成するということ/var/wwwですか?
luqo33

それは、Ubuntu 14.04のパッケージングに関する質問です。私は専門家ではありません。
Charles Duffy

60

存在しない親ディレクトリからぶら下がっているサブディレクトリを作成する場合は、-pフラグを渡す必要がありmkdirます... Dockerfileを次のように更新してください

RUN mkdir -p ... 

私はこれをテストし、それは正しいです。


17

単純に使用することもできます

WORKDIR /var/www/app

フォルダが存在しない場合は、自動的に作成されます。

次に、必要なディレクトリに戻ります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.