web-dev-qa-db-fra.com

Comment définir les variables d'environnement lors de l'intégration dans le menu fixe

J'essaie de définir des variables d'environnement dans le conteneur Docker pendant la construction, mais sans succès. Les définir lorsque vous utilisez la commande Exécuter fonctionne mais je dois les définir lors de la construction.

Dockerfile

FROM ubuntu:latest
ARG TEST_ENV=something

Commande que j'utilise pour construire

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

Fonctionnement

docker run -dit myimage

Je vérifie les variables d'environnement disponibles en utilisant

docker exec containerid printenv

et le résultat est

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 n'est pas présent

32
Michał Pietraszko

ARG sert à définir les variables d’environnement utilisées lors de la docker build processus - ils ne sont pas présents dans l’image finale, c’est pourquoi vous ne les voyez pas lorsque vous utilisez docker run.

Vous utilisez ARG pour les paramètres pertinents uniquement lors de la création de l'image et non requis par les conteneurs que vous exécutez à partir de l'image. Vous pouvez utiliser ENV pour les variables evnvironment à utiliser lors de la construction et dans les conteneurs.

Avec ce Dockerfile:

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

Vous pouvez remplacer l'argument de compilation comme vous l'avez fait avec docker build -t temp --build-arg BUILD_TIME=def .. Ensuite, vous obtenez ce que vous attendez:

> 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