Comment définir une variable dans un Dockerfile?
Dans mon Dockerfile, je voudrais définir des variables que je peux une utilisation ultérieure dans le Dockerfile.
Je suis conscient de la ENV
instruction, mais je ne veulent pas de ces variables à des variables d'environnement.
Est-il un moyen de déclarer des variables à Dockerfile portée?
- vous pouvez utiliser ARG - voir docs.docker.com/engine/reference/builder/#arg
- Je pense que vous devriez poster que votre réponse(même si c'est un vieux post; pour la postérité), comme c'est exactement ce que l'OP est de demander.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
ARG
- voir https://docs.docker.com/engine/reference/builder/#argCOPY
d'instruction ainsi?À ma connaissance, seule
ENV
permet que, comme mentionné dans "Environnement de remplacement"Ils doivent être des variables d'environnement afin d'être redéclarée dans chaque nouveaux conteneurs créé pour chaque ligne de la Dockerfile par
docker build
.En d'autres termes, ces variables ne sont pas interprétés directement dans un Dockerfile, mais dans un conteneur créé pour un Dockerfile ligne, d'où l'utilisation de la variable d'environnement.
Ce jour, j'utilise à la fois
ARG
(docker 1.10+, etdocker construction-construire-arg var=valeur
) etENV
.À l'aide de
ARG
seul signifie que votre variable est visible au moment de la construction, pas au moment de l'exécution.Mon Dockerfile a généralement:
Dans votre cas,
ARG
est assez: je l'utilise généralement pour le réglage de la variable http_proxy, que docker construire des besoins pour l'accès à internet au moment de la construction.Pour répondre à votre question:
Vous pouvez définir une variable avec:
Espaces autour de l'égalité de caractère ne sont pas autorisés.
Et l'utiliser plus tard avec:
Si la variable est ré-utilisée dans le même
RUN
instruction, on pourrait simplement définir une variable d'environnement. J'aime vraiment la façon dont ils ont abordé cette avec la officiel Ruby Dockerfile.RUN foo=$(date) && echo $foo
Vous pouvez utiliser
ARG variable defaultValue
et au cours de l'exécution de la commande, vous pouvez même mettre à jour cette valeur à l'aide--build-arg variable=value
. Pour utiliser ces variables dans le panneau fichiers, vous pouvez les consulter en tant que$variable
dans la commande exécuter.Remarque: Ces variables seraient disponibles pour les commandes de Linux comme
RUN echo $variable
et qu'ils ne serait pas persister dans l'image.