Доступ к эмулятору Cosmos db на локальном компьютере из докера Linux - PullRequest
1 голос
/ 03 июля 2019

Я немного запутался с Linux-докером и эмулятором cosmos db. У меня установлен эмулятор на моей локальной машине. В моей Windows 10 у меня есть докер-контейнер Linux с основным приложением Web API ASP.NET. Когда я пытаюсь получить доступ от контейнера к базе данных космоса, я получаю исключение -> HttpRequestException: соединение отклонено.

В коде C # я получаю необходимые параметры, такие как AuthKey и Uri, для базы данных из переменных среды. Похоже, у меня проблема с сетью между контейнером и локальным хостом, но я не могу понять, как я могу подключить их.

Ниже представлены файлы docker-compose.yml и docker-compose.override.yml.

event.webapi:
    container_name: event.webapi
    image: '${DOCKER_REGISTRY-}eventwebapi'
    environment:
     **- AzureCollectionName=Events
     - AzureDatabaseName=EventsDatabase**
    build:
      context: .
      dockerfile: src/Services/Event/Event.WebApi/Dockerfile

``` docker-compose.override.yml
event.webapi:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_HTTPS_PORT=44378
      **- AzureEndpointUri=https://127.0.0.1:8081
      -AzurePrimaryKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==**
    ports:
      - "53753:80"
      - "44378:443"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

1 Ответ

1 голос
/ 03 июля 2019

Вы не можете получить доступ к хосту vm из контейнера Docker, установив https://127.0.0.1:8081 напрямую.

Пожалуйста, обратитесь к этому документу и попробуйте установить host.docker.internal:8081 для доступа к хосту vm.

У хоста есть изменяющийся IP-адрес (или нет, если у вас нет доступа к сети).Начиная с 18.03, мы рекомендуем подключаться к специальному DNS-имени host.docker.internal, который разрешает внутренний IP-адрес, используемый хостом.Это для целей разработки и не будет работать в производственной среде за пределами Docker Desktop для Windows.


Эмулятору Cosmos DB требуется установленный сертификат SSL, согласно этой ссылке ,Для среды выполнения .net вы можете получить доступ к сертификату непосредственно из хранилища сертификатов Windows.

Однако вы запускаете код .net в образе установщика linux. Поэтому я предлагаю экспортировать сертификат SSL, выполнив эти шаги .

Сохраните его по указанному пути на хосте и подключите каталоги хоста. Пожалуйста, обратитесь к этому руководству .

...