当前位置: 首页 > 知识库问答 >
问题:

Flask和React Docker容器未通过Docker Compose通信

叶华皓
2023-03-14

我有两个容器 - 一个包含 react 应用程序,另一个包含烧瓶应用程序。

我可以使用下面的docker-compose文件和它们各自的Dockerfile构建两者,并且能够通过指定端口上的浏览器访问每个。但是,我的React应用程序对Flask的API调用没有被检索(它们在图片中没有Docker的情况下工作)。

任何建议都非常感谢!

Docker-撰写

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

# 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 应用程序

# 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"]

我在pack.json的React应用程序中也有以下内容,这使我能够对烧瓶应用程序进行API调用(同样,这在没有Docker的情况下工作正常)

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

最后,项目结构(如果有用)

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

共有1个答案

樊俊悟
2023-03-14

正如LinPy和leopal在评论中指出的,<code>包中的<code>127.0.0.1</code>。json</code>需要更改以引用正确的烧瓶容器。

"proxy": "http://middleware:5000",
 类似资料:
  • 如果我们在不同的服务器上使用rabbitmq,它如何与不同的微服务进行对话?我在taskdefinition中使用网络模式作为“默认网络”,我应该将其更改为AWSVPC吗?

  • 我创建了2个Docker图像。一个是tomcat,另一个是Apache。我可以让它们单独运行,但我试图通过AJP将apache代理到tomcat 目前我得到以下信息: [Thu 3月17日15:49:43.373689 2016年][代理:错误][pid 11:TID 140213099689728](111)连接被拒绝:AH00957:AJP:试图连接到127.0.0.1:8009(本地主机)失

  • 类名: Imi\Util\Co\ChannelContainer 一个通道(Channel)管理容器,通过一个 id,快速操作和管理通道。 imi v1.2.0 版本新增 方法 push 向通道中写入数据。 ChannelContainer::push('id123', '数据'); ChannelContainer::push('id123', '数据', 3); // 超时 3 秒 pop

  • 容器与外部网络通信 决定容器是否可以访问外网取决于两个因素: 主机是否会转发IP数据包。这取决于转发系统内的ip_forward这个参数的配置。如果ip_forward值为1,数据包就可以被转发。Docker会使用--ip_forward=true的默认设置,一旦你docker服务启动docker会将系统的ip_forward的值修改为1。使用-ip_forward=false对系统没有改变。通常

  • 本文向大家介绍AngularJS通过$http和服务器通信详解,包括了AngularJS通过$http和服务器通信详解的使用技巧和注意事项,需要的朋友参考一下 $http AngularJS提供了$http服务来同服务端进行通信,$http服务队浏览器的XMLHttpRequest对象进行了封装,让我们可以以ajax的方式来从服务器请求数据。 在AngularJS中与远程HTTP服务器交互时会用一

  • 问题内容: 我需要在Windows 2016 Server上使用Docker / Windows容器并为其准备Windows应用程序才能在其上运行。通过Powershell配置Windows并不像在Ubuntu上那样方便,尤其是如果您从未真正使用过Windows Server并且需要学习所有Powershell命令时,尤其如此;) 是否可以通过GUI访问Windows容器? 可以在Docker,U