【问题标题】:React not making a request from docker container反应不从 docker 容器发出请求
【发布时间】:2020-03-22 17:44:18
【问题描述】:

所以我正在为 React 应用程序开发一个基本的 Express 后端。 请求是这样发出的:

axios.get(`${serverLocation}/api/graph/32`).then(res => {
            this.setState({datag: res.data});
            for(var key in this.state) {
                data.push(this.state[key]);
            }
        });

服务器位置类似于http://IP:PORT。 api是正确的,我能看到的一切,在我的开发机器上都能正常工作。 React 在指定位置等向服务器发出成功请求。问题是,当我通过 docker-compose.yml 将其放入 2 个单独的 docker 容器中时,它将无法工作。 这是我的 docker-compose.yml:

version: '2.0'
services:
  server:
    restart: always
    container_name: varno_domov_server
    build: .
    ports:
    - "8088:5000"
    links:
    - react
    networks:
      - varnodomovnetwork
  react:
    restart: always
    container_name: varno_domov_client
    build: client/
    ports:
    - "8080:3000"
    networks:
      - varnodomovnetwork
networks:
  varnodomovnetwork:
    driver: bridge

我也有自定义的 Dockerfile,服务器看起来像:

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 5000
CMD [ "npm", "start" ]

客户看起来像:

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000
CMD [ "npm", "start" ]

如果您已经阅读了这么多,感谢您抽出宝贵的时间。我愿意接受任何关于 docker 的建议,React 部分不是我写的。如果需要任何其他信息,请在 cmets 中告诉我。隔离让我非常有时间:)

【问题讨论】:

  • serverLocation 的值是多少?
  • 试试server:8088
  • 有没有http? StackOverflow cmets 正在为我删除那部分
  • 我已经找到了问题所在。我会尽快回复这个帖子。我删除了我的 2 个 cmets,不让所有人都可以使用我的 IP 和域:p

标签: reactjs docker express axios


【解决方案1】:

所以,问题是 React 正在向服务器提交请求。我对 React 没有经验,所以当它们在浏览器中实际可用时,我在终端/bash 中寻找日志。

问题是,我的服务器位于公共 IP 上并通过 HTTP 进行通信。这意味着浏览器阻止了内容(混合内容:页面通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点),使我的图表不显示任何数据。一个简单的解决方法是让浏览器浏览不安全的内容,尽管我不是那种生活。所以我做了以下事情: 关键问题是我的服务器和客户端是 2 个独立的容器。因此,在不同的端口上。我所做的是编辑我的 nginx 配置以代理对我的域的任何请求,这些请求看起来像“https://www.example.come/api”,以转发到服务器机器上的服务器容器的端口。

希望这对某人有任何帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多