2015-07-08 8 views
7

Gibt es eine Möglichkeit, die mehreren Bilder durch Verwalten von zwei verschiedenen Dockerfiles zu erstellen? In meinem Fall möchte ich zwei Dockerfile Dockerfile_app1 Dockerfile_app2 im Build-Kontext annehmen.Mehrere Bilder aus mehreren Dockerfiles erstellen

docker build -t <image_name> . 

Die oben wird die dockerfile als Dockerfile

docker build -t <image_name> Dockerfile_app1 

Dies gilt auch für meinen Fall nicht funktioniert genannt Pick da es den Dateinamen als Dockerfile.

erwartete ich habe versucht, von Docker-compose baue auch. Aber es funktioniert nicht.

app1: 
    build: Dockerfile_app1 
    ports: 
    - "80:80" 
app2: 
    build: Dockerfile_app2 
    ports: 
    - "80:80" 
+0

Die Anweisung 'build' in Ihrem' docker-compose.yml' erwartet ein Verzeichnis, keinen Dateinamen. Mit dem Befehl 'docker build' können Sie einen anderen Namen als' Dockerfile' angeben; Überprüfe die man-Seite oder helfe bei der Ausgabe (und vergewissere dich, dass du eine neue Docker-Version hast). – larsks

Antwort

19

Nutzen Sie einfach das -f Argument docker build den Namen des Dockerfile angeben zu verwenden:

$ docker build -t <image_name> -f Dockerfile_app1 . 
... 

Oder in Compose können Sie die dockerfile Schlüssel ab Version 1.3 verwenden:

app1: 
    build: . 
    dockerfile: Dockerfile_app1 
    ports: 
    - "80:80" 
app2: 
    build: . 
    dockerfile: Dockerfile_app2 
    ports: 
    - "80:80" 

Beachten Sie, dass der Schlüssel build für den Buildkontext und nicht für den Namen der Dockerfile gilt (also nach einem Verzeichnis namensgesucht wurde)in Ihrem Fall).

+0

Danke Adrian, es funktioniert, wenn ich Docker build-t -f Dockerfile_app1 Option verwende. Ich erhalte jedoch die Fehlermeldung "Nicht unterstützte Konfigurationsoption für app2-Dienst: 'dockerfile'", wenn ich versuche, sie mithilfe von docker-compose build zu erstellen. Mache ich etwas falsch? – Mahattam

+0

Welche Version von Compose verwenden Sie? Sie müssen wahrscheinlich nur upgraden. 'dockerfile' sollte korrekt sein: https://docs.docker.com/compose/yml/ –

+1

Ich hatte 1.2.0, die nicht funktionierte, nach der Aktualisierung auf 1.3.1 funktioniert es gut für mich, Danke :) – Mahattam