Docker: RUN mkdir kann in einer Docker-Datei nicht ausgeführt werden


116

Dies ist eine Fehlermeldung, die beim Erstellen eines Docker-Images angezeigt wird:

Schritt 18: RUN mkdir / var / www / app && chown luqo33: www-data / var / www / app ---> Ausführen in 7b5854406120 mkdir: Verzeichnis '/ var / www / app' kann nicht erstellt werden: Keine solche Datei oder kein solches Verzeichnis

Dies ist ein Fragment von Dockerfile, das den Fehler verursacht:

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: Verzeichnis kann nicht erstellt werden '/ var / www / app': Keine solche Datei oder kein solches Verzeichnis" klingt so unsinnig - natürlich gibt es kein solches Verzeichnis. Ich möchte es schaffen. Was ist hier falsch?


4
Übrigens nichts Docker-spezifisches hier - Sie hätten das gleiche Problem mkdir /var/www/appauf einem System, auf dem es kein Docker gab /var/www.
Charles Duffy

Antworten:


178

Das Problem ist, dass /var/wwwes auch nicht existiert und mkdirstandardmäßig nicht rekursiv ist - es wird erwartet, dass das unmittelbare übergeordnete Verzeichnis existiert.

Verwenden:

mkdir -p /var/www/app

... oder installieren Sie ein Paket, das /var/wwwvor Erreichen dieses Punktes in Ihrer Docker-Datei ein erstellt.


Vielen Dank für den Hinweis. Übrigens, welches Paket meinst du damit /var/www?
Luqo33

Das ist eine Frage zur Ubuntu 14.04-Verpackung. Ich bin dort kein Experte.
Charles Duffy

60

Wenn Sie Unterverzeichnisse erstellen, die an nicht vorhandenen übergeordneten Verzeichnissen hängen, müssen Sie das -pFlag an mkdir... übergeben. Bitte aktualisieren Sie Ihre Docker-Datei mit

RUN mkdir -p ... 

Ich habe das getestet und es ist richtig.


17

Sie können auch einfach verwenden

WORKDIR /var/www/app

Die Ordner werden automatisch erstellt, wenn sie nicht vorhanden sind.

Wechseln Sie dann zurück in das Verzeichnis, in dem Sie sich befinden müssen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.