Al usar docker con asp.net core para el desarrollo, ¿debo usar variables de entorno o secretos de usuario? Estoy usando el archivo docker predeterminado que crea Visual Studio 2017 al agregar un proyecto, que usa microsoft/aspnetcore:1.1 y creo que es una imagen de Linux.
¿Cómo configuro las variables de entorno/secretos de usuario en la ventana acoplable para que estén configuradas cuando se inicia, pero no se incluyen en el código fuente?
Para fines de producción, debe usar variables de entorno, no use-secrets. Los secretos existen ÚNICAMENTE para el almacenamiento seguro durante el desarrollo al ayudar a evitar que los datos confidenciales se almacenen en el código o se registren en el control de código fuente:
La herramienta Secret Manager no cifra los secretos almacenados y no debe tratarse como un almacén de confianza. Es solo para fines de desarrollo. Las claves y los valores se almacenan en un archivo de configuración JSON en el directorio del perfil de usuario.
Como alternativa a las variables de entorno, puede considerar el uso de almacenamientos de clave-valor "externos", como Consul , Vault , etc.
Con respecto a las variables de entorno en Docker, SO ya tiene preguntas/respuestas relacionadas. Consulte ¿Cómo pasar variables de entorno a contenedores docker? como ejemplo.
Las variables ambientales son mejores: https://12factor.net/config
Si ejecuta docker usando docker run use la opción -e o --env-file : https://docs.docker.com/engine/reference/run/#env-environment-variables
Si ejecuta la ventana acoplable con el environment de uso docker-compose o la clave env_file : https://docs.docker.com/compose/environment-variables/
Para el desarrollo , confío en la herramienta de administrador de secretos .net:
dotnet user-secrets init dotnet user-secrets set "Movies:ServiceApiKey" "12345" ..Ejemplo para ventana acoplable:
docker run ^ -e ASPNETCORE_ENVIRONMENT=Development ^ -v %APPDATA%/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro ^ company/image:latestEjemplo para docker-compose:
version: "3.8" .. net_core_service: .. environment: # should be defined Development-env to allow loading user-secrets located on the local computer. - ASPNETCORE_ENVIRONMENT=Development .. volumes: # map the dotnet user-secret folder - $APPDATA/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro .. ..