использование шлюза API в контейнере Docker для навигации вместо localhost: port - PullRequest
0 голосов
/ 04 октября 2019

У меня есть API-шлюз (ocelot) и работает. Вот некоторые из моих служб, работающих в Docker:

docker-compose.override.yml

services:
  gateway:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:5000
    ports:
      - "6000:5000"

  serviceone:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:5100
    ports:
      - "6100:5100"

  servicetwo:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:5200
    ports:
      - "6200:5200"

ocelot.json

{
  "ReRoutes": [
   {
       ... ommited for clarity
   }],
  "GlobalConfiguration": {
    "BaseUrl": "http://gateway:5000"
  }
}

Контейнеры работают, и я могу быть перенаправлен с помощью ocelot api gateway с помощью

http://localhost:5000/whatever-url-I-registered-in-ocelot

Я попытался изменить это и перейти по http://gateway:5000, но я получаю

IP-адрес сервера не найден.

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Просто перейдите к http://localhost:6000 (на локальной машине) http://gateway:6000 из контейнеров.

вы отображаете localport 6000 в 5000 в контейнере.

Непонятно, где вы пытаетесь его достичь с

1 голос
/ 05 октября 2019

Я подозреваю, что вам нужно добавить запись хостов в карту "gateway" для localhost (127.0.0.1) - при условии, что вы пытаетесь запустить это локально ...

Найти файл hosts;в Linux это будет /etc/hosts, в windows C:\Windows\System32\drivers\etc\hosts;и добавьте запись хостов следующим образом:

127.0.0.1 gateway

Другая вещь, которую нужно проверить, - это привязка вашего порта "6000: 5000". Это означает, что на хост-машине 6000, а в контейнере - 5000. Это означает, что вам может понадобиться использовать порт 6000 с хоста ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...