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
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=/