Saltar al contenido

Obtenga el valor de la variable de entorno en Dockerfile

Nuestros programadores estrellas agotaron sus reservas de café, en su búsqueda a tiempo completo por la resolución, hasta que David encontró el resultado en Gogs por lo tanto en este momento la comparte contigo.

Solución:

Deberías usar el ARG directiva en su Dockerfile que está destinada a este propósito.

Él ARG La instrucción define una variable que los usuarios pueden pasar en tiempo de compilación al constructor con el comando de compilación docker usando el --build-arg = bandera.

Entonces tus Dockerfile tendrá esta línea:

ARG request_domain

o si prefiere un valor predeterminado:

ARG request_domain=127.0.0.1

Ahora puede hacer referencia a esta variable dentro de su Dockerfile:

ENV request_domain=$request_domain

entonces construirás tu contenedor así:

$ docker build --build-arg request_domain=mydomain Dockerfile

Nota 1: Su imagen no se construirá si ha hecho referencia a un ARG en su Dockerfile pero lo excluyó en --build-arg.

Nota 2: Si un usuario especifica un argumento de compilación que no se definió en el Dockerfile, la compilación genera una advertencia:

[Warning] Uno o más argumentos de compilación [foo] no fueron consumidos.

Entonces puedes hacer:
cat Dockerfile | envsubst | docker build -t my-target -

Luego tenga un Dockerfile con algo como:

ENV MY_ENV_VAR $MY_ENV_VAR

Supongo que podría haber un problema con algunos caracteres especiales, pero esto funciona al menos en la mayoría de los casos.

Una alternativa usando envsubst sin perder la capacidad de usar comandos como COPY o ADDy sin usar archivos intermedios sería usar la sustitución de procesos de Bash:

docker build -f <(envsubst < Dockerfile) -t my-target .

valoraciones y comentarios

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


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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