Comment passer une variable d'environnement Host (comme l'utilisateur et le nom d'hôte) à un dockerfile?
Par exemple, si mon nom d'utilisateur est taha
:
echo $USER
taha
Comment écrire mon fichier Docker pour obtenir la même sortie?
FROM centos:centos7
ARG myuser=$USER
CMD echo $myuser
Je rencontrais le même problème. Ma solution était de fournir la variable à l'intérieur d'un docker-compose.yml car le yml supporte l'utilisation des variables d'environnement.
À mon avis, c'est le moyen le plus efficace pour moi car je n'ai pas aimé le taper encore et encore dans la ligne de commande en utilisant quelque chose comme docker run -e myuser=$USER . . .
Déclarant ENV myuser=$USER
ne fonctionnera PAS, dans le conteneur, $myuser
sera défini sur null
.
Ainsi, votre docker-compose.yml pourrait ressembler à ceci:
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- "myuser=${USER}"
et peut être exécuté avec la commande courte docker-compose up
Pour vérifier que la variable a été appliquée, exécutez docker exec -it container-name printenv
pour répertorier toutes les variables du conteneur.
Lorsque vous démarrez votre conteneur Docker, vous pouvez transmettre des variables d'environnement à l'aide de -e
option comme ceci:
docker run -it <image> -e USER=$USER /bin/bash