Я пытаюсь использовать композицию docker для создания двух контейнеров:
- Приложение React
- A flask Сервер с Gunicorn
Я docker составил их, и оба они были усилены. Когда я посетил React, он должен был прокси-запрос от приложения React с портом 3000 на flask сервер с портом 5000. Но я столкнулся с этим:
frontend_1 | Proxy error: Could not proxy request /loadData/ from localhost:3000 to http://backend:5000.
frontend_1 | See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED).
, который, как я полагаю, означает, что он все еще не знать фактический IP-адрес бэкенда контейнера.
Вот некоторые конфигурации:
docker -compose.yml
version: "3"
services:
backend:
build: ./
expose:
- "5000"
ports:
- "5000:5000"
volumes:
- .:/app
command: gunicorn server:app -c ./gunicorn.conf.py
networks:
- app-test
frontend:
build: ./frontend
expose:
- "3000"
ports:
- "3000:3000"
volumes:
- ./frontend:/app
networks:
- app-test
depends_on:
- backend
links:
- backend
command: yarn start
networks:
app-test:
driver: bridge
бэкэнд Dockerfile
FROM python:3.7.3
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
веб-интерфейс Dockerfile
FROM node:latest
WORKDIR /app
COPY . /app
gunicorn.conf.py
workers = 5
worker_class = "gevent"
bind = "127.0.0.1:5000"
пакет веб-интерфейса. json
{
"proxy": "http://backend:5000",
}
Я попробовал почти все, что было сказано онлайн, и он просто не проксирует запрос.
Некоторая информация, которую я уже знал:
- Оба контейнера работают.
- Я могу пропинговать внутренний IP-адрес из контейнера внешнего интерфейса в бэкэнд, и он отвечает, поэтому нет проблем с сетью.
- когда запрашивается localhost: 3000, моя система будет вызывать Ax ios для отправить запрос POST (/ loadData) на сервер, где прокси-часть должна выполнить работу d тогда запрос должен был стать каким-то задним числом: 5000 / loadData /
Кто-нибудь может мне помочь?
Заранее спасибо!