gpt4 book ai didi

docker - 从dockerized网页向后端服务器进行API调用最终以net::ERR_CONNECTION_REFUSED

转载 作者:行者123 更新时间:2023-12-02 18:23:40 26 4
gpt4 key购买 nike

我有2个容器正在运行:

  • 是基于nginx的前端应用程序/容器(在浏览器中打开的网页),尝试在“/ search”端点进行API调用。网页是静态的,可以通过将网页内容复制到/usr/share/nginx/html中来使用。
  • 可以在端口8080上使用的后端服务器

  • 为什么不能对 /search进行GET请求,以便后端处理此请求?

    即使我已经链接了 net::ERR_CONNECTION_REFUSED,我也总是在浏览器的控制台中得到它们。

    这是我的配置:
    services:
    backend:
    image: docker.xxxxx.net/yyyyyy/zzzzzzzz:latest
    expose:
    - "8080"
    ports:
    - "8333:8080"

    frontend:
    build:
    dockerfile: Dockerfile
    context: .
    depends_on:
    - "backend"
    links:
    - backend
    ports:
    - "80:80"
    volumes:
    - ./build:/usr/share/nginx/html

    重要说明,在另一台服务器上仅后端启动就可以进行API调用(然后出现的唯一问题是CORS),因此后端代码还可以,并且该问题必须是错误的docker配置。

    我可以清楚地打开前端,但是我无法进行任何API调用:我已经尝试了很多类似的事情来调用:
  • http://backend/search?q=test
  • http://backend:8080/search?q=test
  • http://backend:8333/search?q=test
  • http://frontend/search?q=test
  • http://frontend:8080/search?q=test
  • http://frontend:8333/search?q=test

  • 结果是一样的。有什么事吗

    最佳答案

    我假设GET请求是从您的浏览器发出的,即是从主机发出的,而不是从前端容器发出的。根据您的配置,8080从后端容器暴露到前端容器,而端口8333暴露给Docker主机。因此,http://backend:8080仅在前端容器中可见,而在主机中不可见。因此,可能必须是http://<docker_ip>:8333/search?q=test才能从后端容器获取响应。

    关于docker - 从dockerized网页向后端服务器进行API调用最终以net::ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931707/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com