Py学习  »  docker

Docker用react应用编写网络问题

praventz • 5 年前 • 1668 次点击  

我正在运行一个react应用程序和一个json服务器,其中包含docker compose。


fetch('localhost:8080/classes')
    .then(response => response.json())
    .then(classes => this.setState({classlist:classes}));

这是我的docker撰写文件:

version: "3"
services:
    frontend:
        container_name: react_app
        build:
            context: ./client
            dockerfile: Dockerfile
        image: praventz/react_app
        ports:
            - "3000:3000"
        volumes:
            - ./client:/usr/src/app
    backend:
        container_name: json_server
        build:
            context: ./server
            dockerfile: Dockerfile
        image: praventz/json_server
        ports:
            - "8080:8080"
        volumes:
            - ./server:/usr/src/app

在我的本地计算机上,我使用192.168.99.100:3000查看我的react应用程序

我使用192.168.99.100:8080来查看json服务器,但似乎无法将它们与以下任何一个连接起来:

backend:8080/classes

json_server:8080/classes

backend/classes

json_server/classes

{host:"json_server/classes", port:8080}

{host:"backend/classes", port:8080}

我应该在fetch()中放入什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57099
文章 [ 1 ]  |  最新文章 5 年前
David Maze
Reply   •   1 楼
David Maze    6 年前

请记住,React应用程序总是在某些用户的浏览器中运行;它不知道Docker是否参与其中,并且无法访问或使用任何与Docker相关的网络设置。

在本地计算机上,我使用[…]192.168.99.100:8080查看json服务器

那么这也是您的React应用程序所需要的。

/api 到后端容器并将其他url转发到前端容器(或者更好的是,运行类似Webpack的工具,将React应用程序编译为静态文件并直接提供该服务)。如果您有这个设置,那么React应用程序可以使用一个路径 /api/v1/... 在没有主机的情况下,它将被解析为相对于浏览器认为的“当前主机”的任何内容,而该主机通常应该是代理。