Docker ReactJS Связь с другим контейнером - PullRequest
2 голосов
/ 16 марта 2019

Мне не удается отправить запрос http с веб-сайта на мой сервер с помощью Docker VPN.

У меня есть файл для создания Docker:

version: '3.7'

services:
  frontend:
    ports:
      - 5001:5001
    build: "./..."
  restapi:
    build: "./.../"
    command: gunicorn rest.wsgi:application --bind 0.0.0.0:8000
    expose:
      - 8000
    depends_on:
      - db
  db:
    image: postgres:10.5-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/

Теперь, с моего реагирующего интерфейса, я пытаюсь отправить почтовый запрос

axios.post('http://restapi:8000/rest/', {data}, {headers})

-> Запрос просто терпит неудачу и никогда не достигаетмоя служба Restapi

Если я захожу в свой контейнер в моем контейнере: docker exec -it "container-id" sh, а затем отправляю запрос wget (curl) на URL, все работает нормально.

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

Но как я могу сделать запрос через контейнеры из реагирующего интерфейса?

1 Ответ

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

Ваши контейнеры могут видеть друг друга через названия сервисов. Но браузер пытается получить доступ как клиент. Так что да, при развертывании на ВМ все будет работать. Чтобы протестировать локальное развертывание, клиент должен знать, где находится restpi, поэтому вам нужно включить в ваши хосты:

    <docker-ip or localhost>     restapi

ОБНОВЛЕНИЕ : если бэкэнд также доступен во внешнем интерфейсе, используйте относительные пути.

  axios.post('/rest/', {data}, {headers})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...