En mi Dockerfile , me gustaría definir variables que pueda usar más adelante en el Dockerfile .
Conozco las ENVinstrucciones, pero no quiero que estas variables sean variables de entorno.
¿Hay alguna manera de declarar variables en el ámbito de Dockerfile ?
variables
docker
dockerfile
Maxime
fuente
fuente

Respuestas:
Puede usar
ARG: consulte https://docs.docker.com/engine/reference/builder/#argfuente
Que yo sepa, solo
ENVpermite eso, como se menciona en " Reemplazo del entorno "Deben ser variables de entorno para poder ser redeclaradas en cada nuevo contenedor creado para cada línea del Dockerfile
docker build.En otras palabras, esas variables no se interpretan directamente en un Dockerfile, sino en un contenedor creado para una línea Dockerfile, de ahí el uso de la variable de entorno.
Este día, uso ambos
ARG( docker 1.10+ ydocker build --build-arg var=value) yENV.Usar
ARGsolo significa que su variable es visible en el momento de la compilación, no en el tiempo de ejecución.Mi Dockerfile generalmente tiene:
En su caso,
ARGes suficiente: lo uso típicamente para configurar la variable http_proxy, que la construcción de Docker necesita para acceder a Internet en el momento de la construcción.fuente
Para responder tu pregunta:
Puede definir una variable con:
No se permiten espacios alrededor del carácter igual.
Y úsalo más tarde con:
fuente
Si la variable se reutiliza dentro de la misma
RUNinstrucción, uno simplemente podría establecer una variable de shell. Realmente me gusta cómo abordaron esto con el archivo oficial Ruby Docker .fuente
RUN foo=$(date) && echo $fooPuede usar
ARG variable defaultValuey durante el comando de ejecución puede incluso actualizar este valor usando--build-arg variable=value. Para usar estas variables en el archivo acoplable, puede referirlas como$variableen el comando de ejecución.Nota: Estas variables estarían disponibles para comandos de Linux como
RUN echo $variabley no persistirían en la imagen.fuente