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

Docker Compose部署前端无法通过服务名调用容器化API问题咨询

问题根本原因
  • 你写在前端代码里的请求地址,是运行在访问用户的本地浏览器中,而非sssfe容器内部。Docker Compose的服务名解析能力仅作用于Docker内部网桥下的所有容器,用户本地设备不在这个网络内,自然无法解析sssapi这个域名,也就没法发起请求。
  • 你进入sssfe容器执行curl能成功,是因为curl命令的运行环境在Docker内部网络,可以正常解析服务名、访问对应容器的端口。
解决方案

方案1:通过现有Nginx反向代理转发(最推荐)

你已经部署了reverseproxy服务,可以直接通过它统一处理前端页面和API请求,无需额外暴露API端口到公网,也不存在跨域问题:

  1. 修改前端代码的apiBase为相对路径:
const apiBase = "/api"
  1. 调整reverseproxy的Nginx配置,新增/api前缀的转发规则,示例配置如下:
location /api {
    proxy_pass http://sssapi:80/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
  1. 修改docker-compose.yml中reverseproxy的配置,添加对sssapi的依赖,确保Nginx可以正常解析sssapi服务名:
reverseproxy:
  build:
    context: ./nginx
    dockerfile: Dockerfile
  ports:
    - 80:80
  depends_on:
    - sssfe
    - sssapi

方案2:直接使用公网地址调用(临时方案)

直接把前端代码里的apiBase替换为你服务器的公网地址+API暴露的端口,也就是你测试可用的http://myurl.com:44384/api,这种方案需要确保44384端口对外放行,同时sssapi服务要配置CORS规则允许前端域名跨域访问,不适合生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:05