2016-04-20 5 views
5

Ich habe mehrere docker-compose.yml-Dateien, die ich die gleiche Dockerfile mit einer leichten Variation verwenden möchte. Also möchte ich ein Argument an diese Docker-Datei übergeben, damit ich je nach dem Wert, auf den die Variable eingestellt ist, etwas anderes machen kann.Übergeben Sie eine Variable an eine Dockerfile von einer docker-compose.yml-Datei

Was ich

Docker-Compose-A.yml

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=foo 

Datei versucht, so weit Docker-Compose-B.yml

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=bar 

ich eine dockerfile haben Datei Ich möchte etwas in verwenden

# Dockerfile 
RUN echo $SOMETHING 

Das funktioniert nicht. SOMETHING wird nicht an die Dockerdatei übergeben.

Mache ich das falsch oder ist das nicht die beabsichtigte Verwendung?

Gibt es eine andere Möglichkeit, eine Variable aus einer docker-compose.yml-Datei an eine Dockerfile zu übergeben?

Jede Rückmeldung wird geschätzt. Danke

+1

Haben Sie "ARG ETWAS" in Dockerfile eingeführt? – Lauri

+0

besser verwenden ENV, siehe https://docs.docker.com/engine/reference/builder/#env – user2915097

+0

@Lauri ausgezeichnet! Vielen Dank –

Antwort

11

Grundsätzlich vermisste ich die Erklärung der Arg in der Dockerfile.

# docker-compose.yml file 

version: '2' 

services: 
    django: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile 
     args: 
     - SOMETHING=foo 

 

# Dockerfile 
ARG SOMETHING 
RUN echo $SOMETHING 


Shoutout für das Zeigen mir das Licht @Lauri.

Verwandte Themen