javascript - 无法在Docker容器之间发出HTTP请求

标签 javascript docker docker-compose

我有2个应用程序在docker-compose下作为服务运行。

  • React应用程序
  • Node.js服务器

  • 我正在尝试通过调用以下命令从我的React应用向Node.js服务器发出HTTP请求:fetch("http://backend:4000/")
    当我在GET http://backend:4000/ net::ERR_NAME_RESOLUTION_FAILED下访问我的React应用时,我在浏览器中得到http://localhost:3000
    这是我的docker-compose文件。
    version: "3.7"
    
    services:
      frontend:
        build:
          context: ./frontend
        volumes:
          - ./frontend:/app
        ports:
          - "3000:3000"
        depends_on:
          - "backend"
    
      backend:
        build:
          context: ./backend
        volumes:
          - ./backend:/app
    

    我正在运行Ubuntu,多年来一直遇到这个问题。没有任何真正的帮助-创建网络并为其分配服务,创建链接等。

    奇怪的是,当我进入React应用程序容器并运行bash命令时:ping backendcurl http://backend:4000,请求实际上可以正常工作。

    最佳答案

    我的猜测是,您正在尝试通过浏览器而不是前端容器来连接后端应用程序。如果是这样,那么您应该像这样显示后端端口;

      backend:
        container_name: backend
        build:
          context: ./backend
        volumes:
          - ./backend:/app
        ports:  #whatever the port number
          - "4000:4000"
    

    那么您应该在react应用上将网址从http://backend:4000更改为http://localhost:4000

    关于javascript - 无法在Docker容器之间发出HTTP请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57931056/

    相关文章:

    docker - 无法启动 Docker 服务并出现错误 "Failed to start docker.service: Unit not found."

    docker - 如何将主机名从主机解析为 Docker 容器?

    reactjs - 使用Docker时如何隐藏React启动欢迎消息

    javascript - 如何将自定义图形放置在模式对话框的右上角?

    javascript - jquery ajax 问题 - 即使状态代码为 200 也会出错

    docker - 在 docker 容器中运行巧克力失败

    python - 无法执行脚本 docker-compose Laravel

    javascript - setTimeout加倍

    javascript - 如何用更少的行数快速制作多个嵌套属性对象?

    linux - 在 Tinycore (Docker) 上安装 Firefox