Como se ilustra en el número 684 , exportno 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 ENVpersistirán cuando se ejecute un contenedor desde la imagen resultante.
Puede ver los valores usando docker inspecty 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:
FOOpersiste a través de contenedores intermedios, gracias a la ENVpalabra clave;
BARno persiste en el siguiente paso debido al exportcomando;
BAZ se muestra correctamente porque la variable se utiliza en el mismo contenedor.
dockerpor ejemplo,runcon--env-fileo--envexportará 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.