webentwicklung-frage-antwort-db.com.de

Wie setze ich Umgebungsvariablen während des Docker-Einbaus?

Ich versuche, Umgebungsvariablen im Docker-Container während des Builds zu setzen, aber ohne Erfolg. Wenn Sie den Befehl run verwenden, funktioniert dies, aber ich muss sie während des Builds festlegen.

Dockerfile

FROM ubuntu:latest
ARG TEST_ENV=something

Befehl, mit dem ich baue

docker build -t --build-arg TEST_ENV="test" myimage .

Laufen

docker run -dit myimage

Ich überprüfe die verfügbaren Umgebungsvariablen mit

docker exec containerid printenv

und das Ergebnis ist

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root

TEST_ENV ist nicht vorhanden

32

ARG dient zum Festlegen von Umgebungsvariablen, die während des Vorgangs docker build verwendet werden. Sie sind im endgültigen Abbild nicht vorhanden. Aus diesem Grund werden sie bei Verwendung von docker run nicht angezeigt. ].

Sie verwenden ARG für Einstellungen, die nur relevant sind, wenn das Image erstellt wird und nicht von Containern benötigt werden, die Sie vom Image ausführen. Sie können ENV für Umgebungsvariablen verwenden, die während des Builds und in Containern verwendet werden.

Mit diesem Dockerfile:

FROM ubuntu                                                                                                            
ARG BUILD_TIME=abc                                                                                                     
ENV RUN_TIME=123                                                                                                       
RUN touch /env.txt                                                                                                     
RUN printenv > /env.txt 

Sie können das Build-Argument wie mit docker build -t temp --build-arg BUILD_TIME=def . Überschreiben. Dann bekommen Sie, was Sie erwarten:

> docker run temp cat /env.txt                                                                                         
HOSTNAME=b18b9cafe0e0                                                                                                  
RUN_TIME=123                                                                                                           
HOME=/root                                                                                                             
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin                                                      
BUILD_TIME=def                                                                                                         
PWD=/ 
57
Elton Stoneman