Como se ilustra en el número 684 , export
no persistirá en las imágenes. (No olvide que cada directiva de Dockerfile generará un contenedor intermedio, comprometido en una imagen intermedia: esa imagen no conservará el valor exportado)
ENV
:
Las variables de entorno establecidas con ENV
persistirán cuando se ejecute un contenedor desde la imagen resultante.
Puede ver los valores usando docker inspect
y cambiarlos usando docker run --env <key>=<value>
.
El problema estaba ilustrando eso con:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Cuando lo hago docker run [img] bash -c 'echo $PATH'
nunca lo incluye /foo/bar
.
Intentalo
Cree un nuevo archivo docker que contenga:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Entonces constrúyelo. El resultado del último paso es:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Puedes ver:
FOO
persiste a través de contenedores intermedios, gracias a la ENV
palabra clave;
BAR
no persiste en el siguiente paso debido al export
comando;
BAZ
se muestra correctamente porque la variable se utiliza en el mismo contenedor.
docker
por ejemplo,run
con--env-file
o--env
exportará esas (por estos argumentos de opción) variables? Perdón por encontrarme con una respuesta tan antigua, pero una búsqueda web me acaba de plantearla. Buena respuesta por cierto.