In meinem Dockerfile
habe ich:
ADD ../../myapp.war /opt/tomcat7/webapps/
Diese Datei existiert, da sie ls ../../myapp.war
mir die richtige Datei zurückgibt, aber wenn ich sie ausführe, sudo docker build -t myapp .
habe ich:
Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Weiß jemand warum und wie man es richtig macht?
Antworten:
Sie können die Docker-Datei aus dem übergeordneten Verzeichnis erstellen:
quelle
-f
scheint gemäß den Dokumenten nicht veraltet zu sein -> Geben Sie eine Docker-Datei (-f) an : docs.docker.com/engine/reference/commandline/build/…Leider muss (aus praktischen und Sicherheitsgründen, denke ich), wenn Sie lokalen Inhalt hinzufügen / kopieren möchten, dieser sich unter demselben Stammpfad befinden wie der
Dockerfile
.Aus der Dokumentation :
BEARBEITEN: Es gibt jetzt eine Option (
-f
), um den Pfad Ihrer Docker-Datei festzulegen. Es kann verwendet werden, um das zu erreichen, was Sie wollen, siehe die Antwort von @Boedy unten.quelle
Mit Docker-Compose können Sie den Kontextordner festlegen:
quelle
Hinzufügen einiger Codefragmente zur Unterstützung der akzeptierten Antwort.
Verzeichnisaufbau :
Docker-Dateieintrag:
Befehl zum Erstellen des Docker-Images
quelle
install_x.sh
?Die Lösung für Benutzer von Composer besteht darin, ein Volume zu verwenden, das auf den übergeordneten Ordner verweist:
Aber ich bin mir ziemlich sicher, dass man mit Volumes in Dockerfile spielen kann .
quelle
Da
-f
ein anderes Problem verursacht wurde, entwickelte ich eine andere Lösung.Das
-f
Flag löst mein Problem nicht, da meinonbuild
Bild nach einer Datei in einem Ordner sucht und wie folgt aufrufen musste:-f foo/bar/Dockerfile foo/bar
anstatt
-f foo/bar/Dockerfile .
Beachten Sie auch, dass dies nur in einigen Fällen eine Lösung als
-f
Flag istquelle