Saltar al contenido

Docker ejecutar script que exporta variables env

Solución:

No hay forma de exportar una variable de un script a una imagen secundaria. Como regla general, las variables de entorno viajan hacia abajo, nunca hacia un padre.

ENV persistirá en el entorno de construcción y en las imágenes y contenedores secundarios.

Dockerfile

FROM busybox
ENV PLATFORM_HOME test
RUN echo $PLATFORM_HOME

Dockerfile.child

FROM me/platform
RUN echo $PLATFORM_HOME
CMD ["sh", "-c", "echo $PLATFORM_HOME"]

Construye el padre

docker build -t me/platform .

Luego construye al niño:

→ docker build -f Dockerfile.child -t me/platform-test  .
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM me/platform
 ---> 539b52190af4
Step 2/3 : RUN echo $PLATFORM_HOME
 ---> Using cache
 ---> 40e0bfa872ed
Step 3/3 : CMD sh -c echo $PLATFORM_HOME
 ---> Using cache
 ---> 0c0e842f99fd
Successfully built 0c0e842f99fd
Successfully tagged me/platform-test:latest

Entonces corre

→ docker run --rm me/platform-test
test

Creo que la exportación establece las variables de entorno para los procesos secundarios. Así que realmente no importa si RUN o ENTRYPOINT. Al leer el comando de fuente de Linux que no funciona al compilar Dockerfile, creo que el comando de fuente tampoco puede ayudar.

Debe usar ENV si desea establecer las variables de entorno en Dockerfile.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *