from arg variables docker dockerfile

variables - arg - ¿Cómo definir una variable en un Dockerfile?



dockerfile environment variables from host (4)

En mi Dockerfile , me gustaría definir variables que pueda usar más adelante en el Dockerfile .

ENV instrucción ENV , pero no quiero que estas variables sean variables de entorno.

¿Hay alguna manera de declarar variables en el ámbito de Dockerfile ?


Para responder tu pregunta:

En mi Dockerfile, me gustaría definir variables que pueda usar más adelante en el Dockerfile.

Puede definir una variable con:

ARG myvalue=3

No se permiten espacios alrededor del carácter igual.

Y úsalo más tarde con:

RUN echo $myvalue > /test


Puede usar ARG : consulte docs.docker.com/engine/reference/builder/#arg

La instrucción ARG define una variable que los usuarios pueden pasar en el momento de la compilación al constructor con el comando de docker build la --build-arg <varname>=<value> docker build utilizando el --build-arg <varname>=<value> . Si un usuario especifica un argumento de compilación que no se definió en el Dockerfile, la compilación genera un error.


Que yo sepa, solo ENV permite, como se menciona en " Reemplazo del entorno "

Las variables de entorno (declaradas con la declaración ENV ) también se pueden usar en ciertas instrucciones como variables para ser interpretadas por el Dockerfile.

Deben ser variables de entorno para volver a declararse en cada nuevo contenedor creado para cada línea del Dockerfile por la 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 docs.docker.com/engine/reference/builder/#arg ( docs.docker.com/engine/reference/builder/#arg ) y ENV .
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:

ARG var ENV var=${var}

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.


Si la variable se reutiliza dentro de la misma instrucción RUN , uno podría simplemente establecer una variable de shell. Realmente me gusta cómo abordaron esto con el archivo oficial Ruby Docker .