Связь между двумя сервисами asp.net с докером на одном хосте - PullRequest
0 голосов
/ 04 января 2019

В настоящее время я пытаюсь разместить две из моих основных служб asp.net в докере.Я могу их запустить и запустить, но проблема в том, что я не знаю, как связаться между двумя контейнерами.

Я использую docker-compose, чтобы мои приложения работали ивыделите порты на моем хост-компьютере.

URL-адреса служб размещены в файле appsettings.json.Я думаю, что проблема заключается здесь, потому что я не знаю, где получить правильный IP-адрес запущенных контейнеров.

Я уже пытался использовать сеть хоста в обоих файлах docker-compose, но не смогзаставить это работать.

Я также попытался получить IP-адрес контейнера с помощью проверки контейнера Docker.но эти IP-адреса недоступны.

docker-compose службы 1:

version: '3.4'    
services:
  leave.api:
    build:
      context: .
      dockerfile: app1/Dockerfile
    environment:
  - ASPNETCORE_ENVIRONMENT=Development
ports:
  - 5002:5002

docker-compose службы 2:

version: '3.4'
services:
  backoffice:
    build:
      context: .
      dockerfile: BackOffice/Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - 5001:5001

Я надеюсь найти способчтобы иметь возможность общаться между двумя службами.

Ответы [ 4 ]

0 голосов
/ 04 января 2019

Спасибо за все ответы, но я нашел другое решение, которое лучше всего подходит для моей ситуации.

Я добавил следующую строку в оба моих файла docker-compose:

network_mode: bridge

Таким образом, оба моих контейнера используют одну и ту же сеть. После этого я мог связываться между контейнерами, используя свой IP-адрес хоста с портом, к которому привязан сервис. Я разместил этот IP-адрес в appsettings.json так же, как и раньше.

0 голосов
/ 04 января 2019

Это объясняет мостовые контейнеры https://docs.docker.com/v17.09/engine/userguide/networking/default_network/container-communication/

Если ваше общение основано на http, я бы порекомендовал иметь шлюз http, который отслеживает ваши контейнеры и их конечные точки обслуживания.

0 голосов
/ 04 января 2019

Вы можете общаться между двумя сервисами в Docker-контейнере, используя имя сервиса.

В вашем случае в вашем файле, созданном в Docker, есть службы backoffice и листья .api.

Таким образом, вы можете получить доступ к сервису backoffice с сайта left.api, используя https://backoffice:5001/.

0 голосов
/ 04 января 2019

Вы можете использовать опции external_links, кажется наиболее подходящим решением в вашем случае: https://docs.docker.com/compose/compose-file/#external_links

...