Comment puis-je définir des variables d'environnement lors de la compilation dans le panneau
Je suis en train de définir des variables d'environnement dans le panneau conteneur lors de la compilation, mais sans succès. Leur mise lors de l'utilisation d'exécuter la commande fonctionne, mais j'ai besoin de les définir lors de la compilation.
Dockerfile
FROM ubuntu:latest
ARG TEST_ENV=something
De commande que j'utilise pour construire
docker build -t --build-arg TEST_ENV="test" myimage .
De course
docker run -dit myimage
Je suis la vérification des 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
OriginalL'auteur Michal Pietraszko | 2016-09-20
Vous devez vous connecter pour publier un commentaire.
ARG
est pour la définition des variables d'environnement qui sont utilisés lors de ladocker build
processus - ils ne sont pas présents dans l'image finale, c'est pourquoi vous ne voyez pas quand vous utilisezdocker run
.Vous utilisez
ARG
pour les paramètres qui ne sont pertinentes que lorsque l'image est en cours de construction, et ne sont pas nécessaires par les conteneurs que vous exécutez à partir de l'image. Vous pouvez utiliserENV
pour evnvironment les variables à utiliser lors de la compilation et de conteneurs.Avec cette Dockerfile:
Vous pouvez remplacer la build arg comme vous l'avez fait avec
docker build -t temp --build-arg BUILD_TIME=def .
. Ensuite, vous obtenez ce que vous attendez:ENV
ajouté à la variable d'environnement mais en utilisantdocker build -t temp --build-arg BUILD_TIME=def
imprime "Un ou plusieurs build-args [BUILD_TIME] n'ont pas été consommés, à défaut de construire.". L'ajout de séparerARG BUILD_TIME_ARG=default
etENV BUILD_TIME=$BUILD_TIME_ARG
aidé. Pourriez-vous ajouter à votre réponse? Merci pour l'aide.Je viens de réaliser que vous pouvez faire
ARG
avec le même nom que leENV
.ARG BUILD_TIME=default
ENV BUILD_TIME=$BUILD_TIME
Ironiquement Elton réponse n'est pas correcte. Michael dernier commentaire a frappé le clou sur la tête et montre comment définir une variable d'environnement par l'intermédiaire d'un build (au moment d'écrire ces lignes).
OriginalL'auteur Elton Stoneman