web-dev-qa-db-fra.com

Transmettre les variables d'environnement hôte à dockerfile

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
10
user5524899

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.

10
Serey

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 
4
Theophile Dano