Создание HTTP-запроса в той же сети Docker - PullRequest
0 голосов
/ 16 марта 2020

У меня есть несколько служб, работающих в разных docker контейнерах, в соответствии с моим docker -компонентом:

version: '3'
services:
  rest:
    build:
      context: './service/'
    image: persian_rest:latest
    container_name: persian_rest
    ports:
      - 8080:8080
    networks:
      - persian_net
    volumes:
      - persian_volume:/data
  scheduler:
    build:
      context: './scheduler/'
    image: persian_scheduler:latest
    container_name: persian_scheduler
    networks:
      - persian_net
  ui:
    build:
      context: './ui/'
    image: persian_ui:latest
    container_name: persian_ui
    ports:
      - 5000:5000
    networks:
      - persian_net
  database:
    image: 'mongo:latest'
    container_name: 'persian_database'
    networks:
      - persian_net
    environment:
      - MONGO_INITDB_ROOT_USERNAME=persian_admin
      - MONGO_INITDB_ROOT_PASSWORD=123456
    ports:
      - 27017:27017
    volumes:
      - persian_volume:/data
volumes:
  persian_volume:
networks:
  persian_net:
    driver: bridge

У меня есть пользовательский интерфейс persian_ui , выполняющий HTTP-запрос к служба REST persian_rest . Я думал, что, поскольку они находятся в одной сети, я просто сделаю запрос на http://persian_rest: 8080 / api

Однако, когда я делаю этот запрос, он не может найти этот ресурс: enter image description here

Кто-нибудь знает, почему мои контейнеры, объединенные в одной сети, не могут выполнять запросы?

1 Ответ

2 голосов
/ 16 марта 2020

В настоящее время вы просматриваете веб-страницу на localhost: 5000. Вы запросили веб-страницу с сервера localhost: 5000, и она соответствовала требованиям, и отправила вам веб-страницу, которая сейчас находится на вашем компьютере.

Если вы теперь хотите получить доступ к API на том же сервере, что и веб-страница, вы можете сделать еще один запрос к localhost, но на этот раз порт 8080. localhost: 8080 / api.

Веб-страница в браузере находится на стороне клиента, а имена, которые вы дали своим контейнерам, предназначены для ссылки внутри сервера. , Из-за пределов сервера в настоящее время ссылка является localhost.

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