2015-04-18 14 views
5

ho notato che in qualche Dockerfile vengono specificate le variabili d'ambiente usando espressioni particolari, che eseguono una sorta di sostituzione di variabile, come ad esempio:variabili d'ambiente con doppi asterischi nei Dockerfile

ENV PASSWORD **Random** 
ENV NAME **False** 

non riesco a trovare alcun riferimento a quelle espressioni nella documentazione ufficiale di Docker.

Dove posso trovare un elenco di espressioni possibili che possono essere utilizzate in un Dockerfile e qual è il loro significato?

+1

Hai un esempio? Un collegamento all'hub Docker con tale Dockerfile? – VonC

+0

Dai un'occhiata a https://registry.hub.docker.com/u/tutum/mysql/dockerfile/ per esempio – lec00q

risposta

1

È convenzione non ufficiale utilizzare queste variabili come variabili di modello. Saranno sostituiti in fase di esecuzione.

Oppure è possibile sostituirli utilizzando lo switch -e di docker run.

Ad esempio:

ENV MYSQL_USER admin 
ENV MYSQL_PASS **Random** 

# Replication ENV 
ENV REPLICATION_MASTER **False** 
ENV REPLICATION_SLAVE **False** 

Se si dà un'occhiata su script di avvio è possibile vedere il seguente:

if [ "$MYSQL_PASS" = "**Random**" ]; then 
    unset MYSQL_PASS 
fi 

PASS=${MYSQL_PASS:-$(pwgen -s 12 1)} 

Se il valore variabile è **Random** cerchiamo di sostituirla con una password generata in modo casuale.