Tengo una API central 2.2 de asp.net implementada. He creado una imagen acoplable. Me gustaría anular las cadenas de conexión en el archivo appsettings.json.
 ¿Hay alguna forma de hacerlo? Intenté a través de variables de entorno cuando inicio el contenedor con el comando docker container run -e "ConnectionStrings:DefaultConnection={...here goes the connection string}"
 También tengo builder.AddEnvironmentVariables(); en mi Startup.cs pero la cadena de conexión en mi appsetting.json no se reemplaza.
Lo verifiqué dentro del contenedor, appsetting.json está allí pero los valores no se reemplazan.
¿Alguna otra forma de cómo hacer estos casos? Gracias.
Para -e , anulará el entorno del sistema que cambiará la cadena de conexión cuando lo recupere del código, no afectará el contenido de appsettings.json .
Por ejemplo
 Suponga que tiene un appsettings.json como
 { "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-TestDockerConfiguration-416C6FD2-3531-42D6-9EDE-18AC45901208;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" } Recupere la cadena de conexión mediante _configuration.GetConnectionString("DefaultConnection") como
 public class HomeController : Controller { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } public IActionResult Index() { return Ok(_configuration.GetConnectionString("DefaultConnection")); //return View(); } } Para docker run -it -p 8888:80 dockerconfiguration , devolverá "Server=(localdb)\\mssqllocaldb;Database=aspnet-TestDockerConfiguration-416C6FD2-3531-42D6-9EDE-18AC45901208;Trusted_Connection=True;MultipleActiveResultSets=true" para Acción de índice
 Para docker run -it -p 8888:80 dockerconfiguration -e "ConnectionStrings:DefaultConnection"="testsqlstring" , devolverá testsqlstring
 Por lo tanto, si solo desea anular el valor en appsettings.json durante el tiempo de ejecución, solo necesita especificar como el Paso 4
Si prefiere cambiar el archivo appsettings.json en el contenedor docker, puede seguir los pasos a continuación
vi con apt-get install vim -ydocker exec -it 43ea835776dd /bin/bash para ir al contenedorls para enumerar los archivos y busque appsettings.jsonvi appsettings.json para modificar el contenido.cat appsettings.json para verificar si el contenido ha cambiadoexit y acceda a Home/Index para verificar el resultado.appsetting.json nunca se cambia, sin embargo, según la jerarquía, los valores de las variables se anulan. Eche un vistazo a los ejemplos en https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#conventions . Funciona bastante bien. Quizás solo para asegurarse de que no rompió algo debido a la ejecución de la línea de comandos, puede intentar asignar variables de entorno a través de docker-compose. La regla general es que el patrón que usa para la "clave" debe coincidir (con la ayuda de __ en lugar de : con lo que tiene en el archivo json, para que se anule.
Probé sin las comillas para la sección ConnectionStrings y funcionó (en una consola de PowerShell.
 docker run -d -p 8080:80 --name letscosmosweb -e ConnectionStrings__ProductsDbContext=$key letscosmosweb:v1 La variable $key contiene la cadena de conexión