2016-10-25 5 views
1

Ich erstelle eine benutzerdefinierte Bild für LAMP-Stack mit folgenden DateienLState Fehler: keine solche Datei oder das Verzeichnis während Docker von einem Bild Brauch Gebäude mit Docker bauen Befehl

apps.conf 
Dockerfile 
entrypoint.sh 
start.sh 
supervisord.conf 

Dockerfile mit ENV wurde zu schaffen, RUN, ADD und CMD Befehl.

Jede Anwendung erfolgreich installiert, aber stecken Sie es bei ADD-Befehl und überprüfen Sie den angegebenen Pfad, der korrekt ist.

ADD /home/ktpl/nayan/MyLamp/supervisord.conf /etc/supervisor/supervisord.conf 

ADD /home/ktpl/nayan/MyLamp/apps.conf /etc/supervisor/conf.d/apps.conf 

ADD /home/ktpl/nayan/MyLamp/entrypoint.sh /entrypoint.sh 

ADD /home/ktpl/nayan/MyLamp/start.sh /start.sh 

Prozess wird auf Befehl Add .:

lstat home/ktpl/nayan/lamp/supervisord.conf: no such file or directory 

Antwort

0

Docker baut immer arbeiten, um den Kontext relativ stecken - das heißt das Verzeichnis, das Sie in dem docker build Befehl übergeben. You cannot use absolute paths in ADD sollten Sie die Quelldatei relativ zum Buildkontext angeben.

Für lokale Dateien, die Sie COPY instead of ADD verwenden sollten, damit Ihre Dockerfile wird:

COPY ./supervisord.conf /etc/supervisor/supervisord.conf 
#etc. 

Und Sie es dann von Ihrem MyLamp Verzeichnis bauen mit docker build -t my-tag .

+0

Ich habe meinen Fehler. Danke für die Lö[email protected] Stoneman –

0

ADD kann verwendet werden, um lokale Dateien Bild zu kopieren beim Bauen.

Paar Dinge:

  • Sie bauen ein Bild aktuelles Verzeichnis mit
  • In Ihrem Fall ist /home/ktpl/nayan/lamp das gültige Verzeichnis
  • Nicht sicher, ob Sie ein Verzeichnis haben /home/ktpl/nayan/MyLamp vorhanden ist und Dateien in Dort.

Gemäß der documentation of docker

The path must be inside the context of the build; you cannot ADD ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

Wenn Ihre Dateien im selben Verzeichnis wie Sie Bild aufbauen, dann können Sie unter Anweisungen verwenden in Dockerfile

ADD ./supervisord.conf /etc/supervisor/supervisord.conf 

ADD ./apps.conf /etc/supervisor/conf.d/apps.conf 

ADD ./entrypoint.sh /entrypoint.sh 

ADD ./start.sh /start.sh 

Natürlich, wie es wurde in der anderen Antwort erwähnt, COPY kann auch verwendet werden.

Probe Dockerfile Inhalt:

FROM busybox 
ADD ./test.txt /test.txt 
CMD ls/

Sie Bild Gebäude und läuft es zeigt Datei in das unten stehende Bild hinzugefügt werden.

enter image description here

Wenn alle Dateien und Verzeichnisse vorhanden und immer noch dieses Problem zu sehen, dann überprüfen .dockerignore Eintrag für das gleiche hat.

+0

Danke für den Hinweis auf meine Fehler und Details. Ich habe die Idee zu meinem Docker-Datei-Fehlerpunkt bekommen und danke, dass ich so wichtige Bereiche geteilt habe, in denen ich mich konzentrieren muss, während ich die Docker-Datei mache. –

+0

@NayanVanza, froh zu wissen, dass dies hilfreich ist. – Rao

Verwandte Themen