2016-12-22 2 views
2

Ich habe folgende Projektstruktur:Docker-compose: immer erhalten kann nicht Dockerfile angegeben locate

WebApp 
    -- docker-compose.yml 
    -- Dockerfile 
    -- docker 
    -- docker-gc 
     --Dockerfile 

docker/docker-gc ist ein git-Modul, das ich vor der Verwendung dieses Befehls erstellt haben:

git submodule add [email protected]:spotify/docker-gc.git docker/docker-gc 

in Docker Ich versuche, Dockerfile in docker-gc auszuführen. Hier ist mein Service:

gc: 
    container_name: docker-gc 
    build: ./docker/docker-gc 
    dockerfile: ./docker/docker-gc/Dockerfile 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 
    - /etc:/etc 

Aber ich immer erhalten Fehler:

Cannot locate specified Dockerfile ./docker/docker-gc/Dockerfile

ich viele Möglichkeiten, wie docker/docker-gc/Dockerfile oder /docker/docker-gc/Dockerfile ergebnislos versucht haben. Liegt dieses Problem im Zusammenhang mit symlink (wegen der Submodul-Natur des Git)? Bitte sag mir, wie ich das beheben kann.

+0

Was passiert, wenn Sie das Attribut 'dockerfile' aus der Datei' docker-compose.yaml' entfernen? Sollte es nicht automatisch die 'Dockerfile' aus dem angegebenen' build'-Verzeichnis verwenden? – nwinkler

+0

@nwinkler nett. Es klappt. Ist hier etwas falsch? falls ich verschiedene 'Dockerfiles' verwenden möchte? (zum Beispiel: 'Dockerfile-dev' für die Entwicklungsumgebung). danke –

+0

Geben Sie einfach den Dateinamen im Dockerfile-Attribut, ich denke, es ist im Build-Verzeichnis aufgelöst. – nwinkler

Antwort

4

Der Fehler ist in Ihrer docker-compose.yaml Datei. In Version 1 dieses Formats können Sie sowohl build als auch dockerfile angeben. Wenn Sie beide angeben, gibt das Attribut dockerfile den Dateinamen an, der in dem von build angegebenen Verzeichnis gefunden werden soll.

gc: 
    container_name: docker-gc 
    build: ./docker/docker-gc 
    dockerfile: Dockerfile 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 
    - /etc:/etc 

Da Dockerfile ist der Standardname, können Sie auch einfach entfernen Sie diese Zeile:

statt dem gleichen Weg, nur den Dateinamen enthalten, wie in build

In Ihrem Fall das dockerfile Attribut ändern

gc: 
    container_name: docker-gc 
    build: ./docker/docker-gc 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 
    - /etc:/etc 

Weitere Informationen finden Sie unter Docker Compose documentation.

Bitte beachten Sie auch, dass Version 2 des Docker Compose-Dateiformats einen anderen Begriff des build-Parameters verwendet.

+0

super nützlich: D vielen Dank für deine klare Antwort: D –

0

Versuchen Sie es am Ende ohne Dockerfile zu tun. Der Standardwert sollte sein, dass eine Datei mit dem Namen "Dockerfile" im angegebenen Ordner verwendet wird.

+0

Ich habe versucht, aber das gleiche Ergebnis ( –

Verwandte Themen