IDX20803: No se puede obtener la configuración al dockerizar el proyecto.
Tengo 2 proyectos, IdentityServer y bankAccount.api.
Dirección de IdentityServer: https://localhost:5001
Dirección de bankaccount: http://localhost:5005
Cuando el proyecto se ejecuta fuera de Docker, todo funciona bien y todos los endpoints en bankaccount.api se ejecutan utilizando tokens recibidos de identityserver. Ahora, cuando ejecutamos los proyectos en Docker, aparece el siguiente error:
IDX20803: No se puede obtener la configuración de: ‘https://localhost:5001/.well-known/openid-configuration’.
Configuraciones del archivo Yml:
identityserver:
container_name: identityserver
environment:
– ASPNETCORE_ENVIRONMENT=Development
– “ConnectionStrings:DefaultConnection=Server=sqlsrvdb;Database=IdentityDb;User Id=sa;Password=123456”
– “Data:Seed=true”
– ASPNETCORE_URLS=https://+:443
– ASPNETCORE_HTTPS_PORT=5001
– ASPNETCORE_Kestrel__Certificates__Default__Password=password
– ASPNETCORE_Kestrel__Certificates__Default__Path=/https/identityserver.pfx
depends_on:
– sqlsrvdb
ports:
– “5001:443”
volumes:
– ~/.aspnet/https:/https:ro
bankaccount.api:
container_name: bankaccount.api
environment:
– ASPNETCORE_ENVIRONMENT=Development
– “ConnectionStrings:DefaultConnection=Server=sqlsrvdb;Database=AccountDb;User Id=sa;Password=123456”
– “GrpcSettings:CountryUrl=http://country.grpc”
– “GrpcSettings:CustomerUrl=http://customer.grpc”
– “GrpcSettings:CurrencyUrl=http://currency.grpc”
– “GrpcSettings:WalletUrl=http://wallet.grpc”
– “CacheSettings:ConnectionString=redisdb:6379”
– “CacheSettings:InstanceName=bankaccount-redis”
– “IdentityServer:Uri=https://identityserver”
depends_on:
– sqlsrvdb
ports:
– “5005:80”
Si solo ejecuto identityserver en Docker y el otro proyecto fuera de Docker, aún funciona correctamente.
davy.ai
El problema parece estar en el proyecto
bankaccount.api
no puede obtener la configuración del proyectoidentityserver
cuando ambos se ejecutan dentro de Docker. El mensaje de error indica que no se puede acceder al punto de conexión.well-known/openid-configuration
.Una posible solución es modificar el archivo Docker Compose para que exponga el puerto
5001
del contenedoridentityserver
fuera de la red Docker agregando5001:5001
a la configuración depuertos
del contenedoridentityserver
.Otra posible solución es modificar la configuración del proyecto
bankaccount.api
para usar el nombre del contenedor comoIdentityServer:Uri
en lugar dehttps://identityserver`. En este caso, la configuración sería
IdentityServer:Uri=https://identityserver:5001`.Ambas soluciones asumen que la red Docker está configurada correctamente y que los contenedores pueden comunicarse entre sí.