2017-10-09 3 views
0

Ich habe ein seltsames Verhalten mit meiner Dockerfile. Ich versuche, es Datei schreiben zu lassen mit Text von Umwelt kommenden varibales:Dockerfile und Umgebungsvariablen

FROM ubuntu:14.04 

ENV KEY '' 
ENV VAL '' 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

ich dieses Bild gebaut und es wie folgt aus:

docker run -it --rm -e KEY=aaa -e VAL=bbb mytest 

Wenn ich die Datei/etc/Testdatei angezeigt werden, ist es leer (es ist vorhanden, aber leer). Es scheint, dass beim Erstellen der Datei keine Umgebungsvariablen festgelegt werden.

Irgendeine Idee?

Danke

Antwort

2

Der Befehl in der Docker Datei RUN echo "${KEY}:${VAL}" > /etc/test ausgeführt wird, wenn Sie das Bild mit docker build ...

So ist die logische Aufbau , an diesem Punkt, da die env Variablen leer sind. Sie müssen das Commad in den CMD-Befehl verschieben, der ausgeführt wird, wenn das Image gestartet wird.

0

Sie können KEY und VALUE als Argumente definieren und ihre Werte festlegen, wenn Sie das Docker-Image erstellen.

FROM ubuntu:14.04 

ARG KEY 
ARG VAL 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

Dann können Sie das Bild mithilfe wie folgt aufbauen:

docker build --build-arg KEY=<value> --build-arg VAL=<value> . 

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

+0

Hmmm ... das bedeutet, dass Sie so viele Bilder aufbauen müssen, wie Sie Schlüsselwertepaare haben. In meinem Fall, warum nicht ... – Cabrinha

+0

Wenn Sie lieber ein einzelnes Image erstellen und Ihre KEY- und VAL-Werte zur Laufzeit ändern möchten, können Sie ein Skript erstellen und es als Einstiegspunkt ausführen und die Werte als Umgebungsvariablen an das Andockfenster übergeben Container. –

Verwandte Themen