Контейнеры Flask и React Docker, не связывающиеся через Docker -Compose - PullRequest
0 голосов
/ 08 января 2020

У меня есть два контейнера - один с приложением реагирования, другой с приложением flask.

Я могу собрать оба файла, используя приведенный ниже файл docker, и соответствующие им файлы Docker, и могу получить доступ каждый через браузер на указанных портах. Однако вызовы API моего приложения React к Flask не извлекаются (они работают без Docker на рисунке).

Любые предложения приветствуются!

Docker -compose

version: '3.7'

services:
    middleware:
        build: ./middleware
        command: python main.py run -h 0.0.0.0
        volumes:
          - ./middleware/:/usr/src/app/
        ports:
          - 5000:5000
        env_file:
          - ./middleware/.flaskenv
    frontend:
        build:
          context: ./frontend/app
          dockerfile: Dockerfile
        volumes:
          - './frontend/app:/usr/src/app'
          - 'usr/src/app/node_modules'
        ports:
          - '3001:3000'
        environment:
          - NODE_ENV=development
        links:
          - middleware

Dockerfile для flask приложения

# pull official base image
FROM python:3.8.0-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

# copy project
COPY . /usr/src/app/

Dockerfile React app

# base image
FROM node:12.2.0-alpine

# set working directory
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
ADD package.json /usr/src/app/package.json
RUN npm install --silent
RUN npm install react-scripts@0.9.5 -g --silent

# start app
CMD ["npm", "start"]

У меня также есть ниже в моем приложении React в package.json, которое позволяет мне делать вызовы API для приложения flask (опять же, это прекрасно работает без Docker)

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

Наконец, структура проекта (в случае полезности)

website
|
|--middleware (Flask app)
  - Dockerfile
  - api
|--frontend (React app)
  -Dockerfile
  -app
|
|-docker-compose.yml

1 Ответ

1 голос
/ 08 января 2020

Как указывалось в комментариях к LinPy и leopal, 127.0.0.1 в package.json необходимо изменить для ссылки на правильный контейнер flask.

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