Variables de entorno Docker Ubuntu

Durante la etapa de compilation de las imágenes de mi docker, me gustaría establecer algunas variables de entorno automáticamente para cada command "RUN" posterior.

Sin embargo, me gustaría establecer estas variables desde dentro del acoplador acoplador, porque su configuration depende de alguna lógica interna.

Usar el command dockerfile "ENV" no es bueno, porque eso no puede basarse en la lógica interna. (No puede confiar en un command ejecutado dentro del contenedor acoplable)

Normalmente (si esto no fuera acoplable) establecería mi file ~ / .profile. Sin embargo, Docker no carga este file en shells no interactivos.

Entonces, en ese momento tengo que ejecutar cada command RUN del docker con:

RUN bash -c "source ~/.profile && do_something_here" 

Sin embargo, esto es muy tedioso (y sucio) cuando tengo que repetir esto cada vez que quiero ejecutar un command bash. ¿Hay algún otro file de "perfil" que pueda usar en su lugar?

Tuve un problema similar y no pude encontrar una solución satisfactoria. Lo que hice fue crear una secuencia de commands que generaría las variables, luego realizaría la operación. Entonces volvería a escribir los commands RUN en Dockerfile para usar ese script en su lugar.

En su caso, si necesita ejecutar varios commands, puede crear un contenedor que cargue las variables, ejecute el command dado como argumento e incluya ese script en la image del acoplador.

Puedes intentar configurar el arg como env como este ARG my_env ENV my_env=${my_env} en Dockerfile, y pasar el 'my_env = prod' en build-args para que puedas usar el set env para los commands RUN subsiguientes que también puedes usar env_file: opción en docker componer file yml en caso de deployment de una stack