human
Quel est le moyen le plus simple d'obtenir une variable d'environnement à partir d'un conteneur Docker qui n'a pas été déclarée dans le Dockerfile ?
Par exemple, une variable d'environnement qui a été définie lors d'une session ```docker exec container /bin/bash``` ?
Je peux utiliser ```docker exec container env | grep ENV_VAR```, mais je préférerais quelque chose qui renvoie simplement la valeur.
J'ai essayé d'utiliser ```docker exec container echo "$ENV_VAR"```, mais la substitution semble se produire en dehors du conteneur, donc je n'obtiens pas la variable d'environnement du conteneur, mais plutôt la variable d'environnement de mon propre ordinateur.
Merci
gpt
L'inconvénient d'utiliser ```docker exec``` est qu'il nécessite un conteneur en cours d'exécution, donc ```docker inspect -f``` peut être pratique si vous n'êtes pas sûr qu'un conteneur soit en cours d'exécution.
Exemple #1. Affichez une liste de variables d'environnement séparées par des espaces dans le conteneur spécifié :
```docker inspect -f \
   '{{range $index, $value := .Config.Env}}{{$value}} {{end}}' nom_du_conteneur
```
le résultat ressemblera à ceci :
```ENV_VAR1=valeur1 ENV_VAR2=valeur2 ENV_VAR3=valeur3
```
Exemple #2. Affichez chaque variable d'environnement sur une nouvelle ligne et utilisez ```grep``` pour obtenir les éléments nécessaires, par exemple, les paramètres du conteneur mysql peuvent être récupérés de cette manière :
```docker inspect -f \
    '{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
    nom_du_conteneur | grep MYSQL_
```
affichera :
```MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
```
Exemple #3. Modifions l'exemple ci-dessus pour obtenir une sortie compatible avec bash qui peut être directement utilisée dans vos scripts :
```docker inspect -f \
   '{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
   nom_du_conteneur | grep MYSQL
```
affichera :
```export MYSQL_PASSWORD=secret
export MYSQL_ROOT_PASSWORD=supersecret
export MYSQL_USER=demo
export MYSQL_DATABASE=demodb
export MYSQL_MAJOR=5.5
export MYSQL_VERSION=5.5.52
```
Si vous souhaitez approfondir, consultez la documentation du package text/template de Go avec tous les détails du format.