У меня есть три службы, одна из них - моя локальная служба идентификации (IS), а две другие - это .netcore 2.2 webapis. Я использую IS в качестве промежуточного программного обеспечения для аутентификации, и две службы должны проходить аутентификацию на IS. Все работает гладко, когда я размещаю свои приложения на IIS, например. Когда я пытаюсь сделать то же самое с docker и docker, compose вещь больше не работает, и у меня появляется следующая ошибка:
Невозможно получить конфигурацию из: '[PII скрыт] ». ---> System.IO.IOException: IDX20804: невозможно получить документ из: '[PII скрыт]'. ---> System. Net .Http.HttpRequestException: Невозможно назначить запрошенный адрес ---> System. Net .Sockets.SocketException: Невозможно назначить запрошенный адрес
Я вставляю docker составьте здесь:
services:
management:
image: ${DOCKER_REGISTRY-}management
build:
context: .
dockerfile: src/Management/Dockerfile
depends_on:
- auth.service
auth.service:
image: ${DOCKER_REGISTRY-}authservice
build:
context: .
dockerfile: src/Authorization/Auth.Service/Dockerfile
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
management2:
image: ${DOCKER_REGISTRY-}management2
build:
context: .
dockerfile: src/Management2/Dockerfile
depends_on:
- auth.service
и docker -compose.override.yml
version: "3.4"
services:
management:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- auth.service=http://auth.service:80
- ASPNETCORE_URLS=http://0.0.0.0:80
ports:
- "58101:80"
auth.service:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://0.0.0.0:80
- ASPNETCORE_HTTPS_PORT=5000
ports:
- "5001:80"
- "5000:443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
management2:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- auth.service=http://auth.service:80
- ASPNETCORE_URLS=http://0.0.0.0:80
ports:
- "58102:80"
Я попытался сделать это и указать в своих опциях носителя аутентификации авторитет как переменная среды auth.service. Не сработало.
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY Infrastructure Infrastructure
COPY Authorization Authorization
COPY Users Users
RUN dotnet restore "Authorization/Auth.Service/Auth.Service.csproj"
WORKDIR /src/Authorization/Auth.Service
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish "Auth.Service.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
RUN ls -ltr /app
ENTRYPOINT ["dotnet", "Auth.Service.dll"]
Остальные довольно похожи. Только имена отличаются. Проблема в том, что он не может добраться до хорошо известного внутри docker. Если сделать запрос в браузере для знаменитых, все мило и модно. Межсервисный, не работает, но опять же только на локальной машине в разработке.