У меня есть два контейнера - один с приложением реагирования, другой с приложением 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