Ich kann ein Dockerfile wie erstellen
docker build -t deepak/ruby .
Aber für eine Docker-Datei, die nicht benannt ist Dockerfile
# DOCKER-VERSION 0.4.8
FROM deepak/ruby
MAINTAINER Deepak Kannan "[email protected]"
RUN ./bin/rails s
Sagen wir, es heißt Dockerfile.app
, mit dem wir bauen
docker build -t deepak/app Dockerfile.app
dann bekomme ich den fehler
Uploading context 0 bytes
Error build: EOF
EOF
docker build --help
gibt es eine Zeile, in der Sie finden können, wonach Sie suchen: -f, --file string Name der Docker-Datei (Standard ist 'PATH / Dockerfile')Antworten:
Beachten Sie, dass
.
am Ende beider Befehle ein Punkt steht.Oder mit einem Tag:
quelle
docker build -f Dockerfile.consumer
gibt mir einen Fehler "Docker Build" erfordert genau 1 Argument. Siehe 'Docker Build - Hilfe'. Verwendung: Docker Build [OPTIONS] PATH | URL | -.
am Ende des obigen Befehls einen Punkt ( ) bemerkt ?.
ist keine Pflicht. Der Befehl build benötigt zwei Argumente, nämlich. Pfad zuDockerfile
& Pfad zumcontext
Verzeichnis. Also können wir tundocker build -t mysupertag -f ./foo/Dockerfile ./foo
Das funktioniert
Docker Build-Dokumentation
quelle
Der letzte Parameter für die Docker-Erstellung ist der Erstellungspfad. Wenn Sie ihn eingeben
.
, bedeutet dies, dass dies der Pfad ist, in dem Sie den findenDockerfile
. Wenn Sie es ändern,Dockerfile.app
wird versucht, danach zu suchenDockerfile.app/Dockerfile
, was nicht korrekt ist.Ich bin mir nicht sicher, ob es noch funktionieren wird, aber Sie haben das früher geschafft.
Versuchen Sie dies und prüfen Sie, ob es hilfreich ist. Wenn nicht, öffnen Sie möglicherweise ein Docker-Problem, um diese Funktion wieder hinzuzufügen, oder aktualisieren Sie die Dokumentation zur Verwendung einer Docker-Datei mit einem anderen Namen.
Weitere Informationen hier: http://docs.docker.io/en/latest/commandline/command/build/
quelle
docker build - < Dockerfile
Ich kann keine lokale Datei hinzufügen. Aber habe es ausprobiert und es funktioniertVersuchen Sie Dockerfeed . Es verwendet die Docker-Funktion, um einen Kontext über stdin zu erstellen. Ich habe das Skript geschrieben, um genau Ihr Problem anzusprechen, mit dem ich selbst konfrontiert war.
Um eine Docker-Datei durch eine andere zu ersetzen, gehen Sie folgendermaßen vor:
Und voilà. Dockerfeed macht dasselbe wie
docker build
. Es packt die Quelle mit seiner Docker-Datei, aber Sie können die alte Docker-Datei gegen die gewünschte austauschen. Dabei werden keine Dateien erstellt, keine Quelle geändert. Das generierte Teerarchiv wird an Docker weitergeleitet, der es wiederum an den Docker-Daemon weiterleitet.Update: Dies war früher eine gültige Antwort, als kein
-f
Schalter verfügbar war. Mit Docker Version 1.5 wurde diese Option eingeführt. Jetzt können Sie eine andere Docker-Datei wie diese erstellen:quelle
Sie können dies auch mit Docker-Compose erreichen.
In Ihrer docker-compose.yml unter dem Build-Abschnitt können Sie das Verzeichnis, in dem Sie Ihre Docker-Datei speichern, und ihren alternativen Namen wie folgt angeben:
Docker-Compose
quelle
Angenommen, Sie haben die Docker-Toolbox einschließlich Docker-Compose und Docker-Maschine erfolgreich installiert . Dies ist meine docker-compose.yml
Und das ist unter Dockerfile
Stellen Sie sicher, dass sich diese Dateien genau unter dem Stammordner befinden. Wenn Sie Docker-Compose ausführen, erstellen Sie ein Image für das Web.
quelle
Mein Fall ist im
/tmp
Verzeichnis und es gibt viele Dateien und Docker versuchen mit anderen Dateien, obwohl ich die übergeben-f <Dockerfile.foo>
Die sauberste und einfachste (für mich) Lösung ist (lesen Sie die
dockerfeed
obigen Antworten):quelle
Windows-Benutzer sollten den folgenden Befehl versuchen:
zum Beispiel :
quelle