You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose前端调用后端出现net::ERR_NAME_NOT_RESOLVED错误求助

问题原因

浏览器运行在宿主机的网络环境中,无法识别Docker Compose内部的服务域名backend——Docker Compose的服务名解析仅在容器所在的Docker专属网络内生效,宿主机(包括浏览器)没有对应的DNS映射,因此会触发net::ERR_NAME_NOT_RESOLVED错误。

解决方法

以下是三种可行的解决方案,按需选择:

  • 方案1:通过宿主机端口映射访问后端
    在Docker Compose的backend服务配置中添加端口映射,将容器的8080端口映射到宿主机的对应端口(示例映射到宿主机8080):

    services:
      backend:
        ports:
          - "8080:8080"
        # 其他原有配置...
    

    修改Angular应用的请求地址为http://localhost:8080/test/health(如果是远程服务器部署,替换为服务器的公网IP或域名)。

  • 方案2:配置代理转发(开发/生产通用)
    开发环境:在Angular项目根目录创建proxy.conf.json文件,内容如下:

    {
      "/test": {
        "target": "http://backend:8080",
        "secure": false,
        "changeOrigin": true
      }
    }
    

    启动Angular时指定代理配置:ng serve --proxy-config proxy.conf.json,此时前端请求/test/health会自动转发到Docker内部的后端服务。

    生产环境:如果前端通过Nginx部署,在frontend容器的Nginx配置中添加反向代理规则:

    location /test {
        proxy_pass http://backend:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    

    之后Angular应用只需请求相对路径/test/health,由前端Nginx负责转发到后端,避免浏览器直接访问Docker内部域名。

  • 方案3:手动添加宿主机DNS映射(仅本地开发用)
    在宿主机的/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)文件中添加一行:

    127.0.0.1 backend
    

    这种方式仅适合本地开发调试,服务器部署时不推荐,因为IP可能变动且无法适配多环境。

内容的提问来源于stack exchange,提问作者alloisxp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:32:09