2013-07-04 14 views
24

Ich bin in der Lage ein Build zu bauen Dockerfile wienicht in der Lage eine eine spezifische Dockerfile

docker build -t deepak/ruby .

Aber für eine Dockerfile, die nicht Dockerfile gestattet

# DOCKER-VERSION 0.4.8 

FROM deepak/ruby 

MAINTAINER Deepak Kannan "[email protected]" 

RUN ./bin/rails s 

lassen Sie uns sagen, dass es Dockerfile.app genannt wird die wir mit

docker build -t deepak/app Dockerfile.app

bauen

dann erhalte ich die Fehler

Uploading context 0 bytes 
Error build: EOF 
EOF 
+5

So ist Ihre Frage , wie erstelle ich eine Dockerdatei, wenn der Name der Dockerdatei nicht Dockerfile ist? –

+1

@KenCochrane ja. das ist die Frage – deepak

+0

https://docs.docker.com/reference/commandline/build/ – zx1986

Antwort

11

Der letzte Parameter Build ist der Build-Pfad Andockfenster, wenn Sie . setzen bedeutet dies der Weg ist, wo Sie die Dockerfile finden. Wenn Sie es in Dockerfile.app ändern, wird es dann versuchen, nach Dockerfile.app/Dockerfile zu suchen, was nicht korrekt ist.

Ich bin mir nicht sicher, ob es noch funktioniert, aber Sie waren dazu in der Lage, dies zu tun.

$ docker build -t deepak/app - < Dockerfile.app 

Versuchen Sie, und sehen, ob es hilft, wenn nicht, vielleicht eine Docker Ausgabe öffnet diese Funktion wieder in hinzuzufügen, oder die Dokumentation zu aktualisieren, wie man ein Dockerfile mit einem anderen Namen zu verwenden.

Mehr Infos hier: http://docs.docker.io/en/latest/commandline/command/build/

+1

Ich habe eine URL versucht und es funktioniert. Der Pfad sollte auch gemäß den Dokumenten funktionieren. wird einen Fehler melden. – deepak

+5

gemäß den Dokumenten, die Sie geteilt haben (Danke). 'docker build - deepak

+2

, aber ich möchte eine andere Dockerfile geben und immer noch einen Kontext haben ie. Dateien hinzufügen. also werde ich einen Fehler ablegen – deepak

2

Versuchen dockerfeed. Es verwendet die Andock-Funktion, um einen Kontext über stdin zu erstellen. Ich habe das Skript geschrieben, um genau auf dein Problem einzugehen.

dockerfeed -d Dockerfile.app . | docker build -t deepak/ruby - 

Und voilà:

Um eine Dockerfile mit einem anderen Sie es wie folgt tun zu ersetzen. Dockerfeed macht dasselbe wie docker build. Es packt die Quelle mit seiner Docker-Datei, aber Sie können die alte Docker-Datei mit der gewünschten austauschen. Es werden keine Dateien erstellt, keine Quelle wird geändert. Das generierte tar-Archiv wird in das Andockfenster geleitet, das es wiederum an den Andock-Daemon sendet.

Update: Dies war eine gültige Antwort in den alten Tagen, wenn es keine -f Schalter zur Verfügung stand. Mit Docker Version 1.5 wurde diese Option eingeführt. Jetzt können Sie einen anderen Dockerfile wie diese bieten bauen:

docker build -f other-Dockerfile . 
34

Docker -f MyDockerfile bauen.

oder mit einem Tag:

Docker -t mysuperimage -f MyDockerfile bauen.

2

Sie können dies auch mit docker-compose erreichen.

In Ihrer Docker-compose.yml unter dem Build-Bereich können Sie das Verzeichnis angeben, in dem Sie Ihre dockerfile speichern und seine stell-Namen wie folgt:

build: 
    context: "/path/to/docker/directory" 
    dockerfile: "dockerfile-alternate-name" 

docker-compose