2016-06-27 6 views
3

Ich versuche parametrize meine Dockerfiles in Build-Phase und verwenden Sie Argumente in Docker-Compose. Zum Beispiel in Docker komponieren ich einen Dienst namens bpp wie folgt definiert:Übergabe von Argumenten für Dockerfiles mit Docker komponieren

bpp: 
    build: 
    context: . 
    dockerfile: Dockerfile.bpp 
    args: 
     gp : 8080 
    image: serv/bpp 
    restart: always 
    depends_on: 
    - data 
    links: 
    - data 

Ich versuche Argument namens gp Dockerfile.bpp passieren, wo ich bin mit Argument, wenn eine Python-Anwendung starten, Belichten ein Port usw. zum Beispiel in dockerfile.bpp bei dem Versuch, Port gp wie folgt aussetzen:

EXPOSE gp 

jedoch beim erstellen von docker-Datei mit dem Befehl docker-compose bauen ich folgende Fehlermeldung erhalten: FEHLER: Dienst ' bpp 'konnte nicht erstellt werden: Ungültiger containerPort: gp

Es scheint, dass das Argument gp in dockerfile nicht sichtbar ist. Irgendwelche Vorschläge?

Antwort

8

Sie müssen ARG gp zu Ihrem Dockerfile hinzuzufügen. obwohl

... 
ARG gp 

EXPOSE $gp 
... 

https://docs.docker.com/engine/reference/builder/#arg

erwähnenswert, dass dies nicht den Anschluss entlarven wird, wenn Sie es über compose laufen lassen, müssten Sie eine ports Anweisung an Ihre Docker-compose.yml hinzufügen für Das.

+0

Danke, das hat endlich den Trick gemacht. – lipponen

1

Zuerst the syntax is:

build: 
    args: 
    buildno: 1 
    user: someuser 

build: 
    args: 
    - buildno=1 
    - user=someuser 

So versuchen, mit gp: 8080, nicht gp : 8080.

Zweitens, stellen Sie sicher, dass Sie version 2 of the docker-compose.yml format verwenden.

Drittens versuchen

EXPOSE $gp 
+0

Ich habe eine Lösung vorgenommen, die Sie vorgeschlagen haben, aber folgende Fehlermeldung: FEHLER: Dienst 'bpp' konnte nicht erstellt werden: EXPOSE erfordert mindestens ein Argument – lipponen

+0

@lipponen haben Sie versucht, $ gb? Ich nehme an, es scheitert auch ohne den $? – VonC

+0

Ja, ich hatte EXPOSE $ gp in dockerfile – lipponen

Verwandte Themen