En mi Dockerfile , me gustaría definir variables que pueda usar más adelante en el Dockerfile .
Conozco las ENV
instrucciones, 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
ENV
permite 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
ARG
solo 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,
ARG
es 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
RUN
instrucció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 $foo
Puede usar
ARG variable defaultValue
y 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$variable
en el comando de ejecución.Nota: Estas variables estarían disponibles para comandos de Linux como
RUN echo $variable
y no persistirían en la imagen.fuente