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?

luqo33
quelle
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.

Charles Duffy
quelle
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.

Kostikas
quelle
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.

Helzgate
quelle
-1

Neben den vorherigen Anwendungsfällen können Sie mit Docker Compose auch Verzeichnisse erstellen, falls Sie neue Dummy-Ordner erstellen möchten für docker-compose up:

    volumes:
  - .:/ftp/
  - /ftp/node_modules
  - /ftp/files
Jasmeet Singh Chhabra
quelle
Was ist los mit dieser Antwort? Helzgates war auch zu spät.
Peter Mortensen