• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

1.6K
Vistas
asp.net core anula las cadenas de conexión a través de variables ENV

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.

over 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

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

  1. 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": "*" }
  2. 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(); } }
  3. 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

  4. Para docker run -it -p 8888:80 dockerconfiguration -e "ConnectionStrings:DefaultConnection"="testsqlstring" , devolverá testsqlstring

  5. 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

  1. Instale el comando vi con apt-get install vim -y
  2. Ejecute docker exec -it 43ea835776dd /bin/bash para ir al contenedor
  3. Ejecute ls para enumerar los archivos y busque appsettings.json
  4. Ejecute vi appsettings.json para modificar el contenido.
  5. Ejecute cat appsettings.json para verificar si el contenido ha cambiado
  6. Ejecute exit y acceda a Home/Index para verificar el resultado.
over 3 years ago · Santiago Trujillo Denunciar

0

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.

over 3 years ago · Santiago Trujillo Denunciar

0

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

over 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda