При использовании docker-compose up между приложением Reactjs и платформой Flask возникает ошибка прокси - PullRequest
0 голосов
/ 01 октября 2019

Всякий раз, когда я пытаюсь запустить свое приложение локально, все работает нормально. Тем не менее, если я пытаюсь сделать docker-compose up и получить доступ к приложению в Chrome, я получаю следующую ошибку прокси:

Ошибка прокси: не удалось запрос / импорт пакета от localhost: 3000 до http://127.0.0.1:5000/. См. https://nodejs.org/api/errors.html#errors_common_system_errors для получения дополнительной информации (ECONNREFUSED).

Я также заметил, что у меня есть отпечатки в Flask API, но они не отображаются. Я пытался выяснить, связано ли это, но не могу понять.

У меня есть прокси, предположительно правильно настроенный на package.json в папке приложения React:

"proxy": "http://127.0.0.1:5000/"

Это мой файл docker-compose:

version: '3'

services:
  backend-aptoide-center:
    build: ./backend-aptoide-center
    expose:
      - 5000
    ports:
      - 5000:5000
    networks:
      - same_network
    volumes:
      - ./backend-aptoide-center:/urs/src/app
    environment:
      - FLASK_ENV=development
      - FLASK_APP=api
      - FLASK_DEBUG=1
      - LC_ALL=C.UTF-8
      - LANG=C.UTF-8
      - MONGO_URL=mongodb://127.0.0.1:27017/aptoidePVC
    depends_on:
      - mongodb
      - frontend-aptoide-center
  frontend-aptoide-center:
    build: ./frontend-aptoide-center
    expose:
      - 3000
    ports:
      - 3000:3000
    networks:
      - same_network
    volumes:
      - ./frontend-aptoide-center/src:/usr/src/app/src
      - ./frontend-aptoide-center/public:/usr/src/app/public
  mongodb:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - 'mongo:/data/db'
    networks:
      - same_network
    environment:
      - MONGO_INITDB_DATABASE=aptoidePVC
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=example

volumes:
  mongo:

networks:
  same_network:
    driver: bridge

Dockerfile для Flask API:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-dev build-essential python3-virtualenv

ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m virtualenv --python=/usr/bin/python3 $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ENV PYTHONUNBUFFERED=1

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY requirements.txt /usr/src/app

RUN pip3 install -r requirements.txt

ENTRYPOINT [ "flask" ]
CMD [ "run" ]

И Dockerfile для приложения React:

FROM node:latest

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app

RUN npm install

CMD [ "npm", "start" ]

1 Ответ

0 голосов
/ 07 октября 2019

В среде docker-compose лучше всего обращаться к сервисам в контейнерах с именем контейнера (которое также автоматически задается как имя хоста соответствующих контейнеров), а не с IP-адресами.

InВ вашем случае, если React находится в контейнере frontend-aptoide-center, IP-адрес 127.0.0.1 будет называться сетевым узлом, а не базовым хостом, поскольку с точки зрения каждого контейнера адрес 127.0.0.1 является его локальной обратной связью. address.

Поэтому, если вы изменили конфигурацию React на "proxy": "http://backend-aptoide-center:5000/", он должен направить к нужному узлу в сети docker-compose.

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