O_o7-.-8 2026-04-23 18:27 采纳率: 0%
浏览 7

AI-CS客服系统自部署问题

docker部署,前端访问后端报错404

img

前后端启动日志是这个

img


请问你有遇到过这个问题嘛
补充:使用的是docker compose -f docker-compose.prod.yml up -d命令启动容器
部署是只修改了
数据库:MYSQL_ROOT_PASSWORD、DB_PASSWORD
管理员:ADMIN_PASSWORD
安全密钥:ENCRYPTION_KEY(64 位 hex)

MILVUS_DISABLED=true
VECTOR_STORE_DISABLED=true
其余未做修改,
唯一变化是服务器中有其他容器启动,如下:

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2026-04-23 18:33
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提到在 AI-CS客服系统Docker部署 中,前端访问后端时出现 404 错误,并且提供了前后端的启动日志。这说明你的服务虽然已经启动,但前端无法正确访问到后端接口。这是一个常见的 Docker 部署问题,可能涉及以下多个方面:


    ✅ 一、常见原因分析

    1. 网络配置错误(容器间通信)
      • 前后端容器之间没有正确连接,或者使用了错误的 IP 或域名。
    2. 端口映射不正确
      • 后端服务监听的端口未被正确暴露或映射到宿主机。
    3. 路径配置错误
      • 前端请求的 URL 路径与后端实际提供的接口路径不一致。
    4. Docker 网络隔离
      • 容器处于不同的 Docker 网络中,导致无法互相访问。
    5. 后端服务未正确启动或运行异常
      • 日志中可能有报错信息,需要仔细查看。

    ✅ 二、解决步骤(有序列表)

    1. 检查后端服务是否正常运行

    • 查看后端容器的日志:
      docker logs <backend_container_id>
      
    • 确保后端服务已经成功启动,并监听了正确的端口(如:8080)。

    重点提示:
    如果后端服务没有启动成功,比如报错 Address already in useFailed to start service,请先解决这些基础问题。


    2. 确认后端端口是否正确映射

    • 查看后端容器的端口映射:
      docker inspect <backend_container_id> | grep HostPort
      
    • 确认后端服务监听的是 0.0.0.0:8080,而不是 127.0.0.1:8080,否则只能从容器内部访问。

    重点提示:
    在 Docker 中,如果服务只绑定到 127.0.0.1,那么从外部是无法访问的。你需要确保后端服务监听的是 0.0.0.0


    3. 检查前端访问的 URL 是否正确

    • 检查前端代码中请求的 API 地址是否为:
      // 示例:http://localhost:8080/api/xxx
      // 或者 http://<docker_host_ip>:8080/api/xxx
      
    • 如果前端和后端运行在同一个 Docker 网络中,可以使用容器名作为域名访问(如:http://backend:8080/api/xxx)。

    重点提示:
    使用 Docker 网络时,不要用 localhost,而是使用容器名称或 IP 地址。


    4. 确认前后端是否在同一个 Docker 网络中

    • 查看前后端容器所在的网络:
      docker inspect <frontend_container_id> | grep Network
      docker inspect <backend_container_id> | grep Network
      
    • 如果不在同一个网络中,可以通过创建自定义 Docker 网络并加入容器来解决。

    重点提示:
    创建自定义网络并让前后端容器加入同一网络,可以实现更稳定的容器间通信。


    5. 检查反向代理或 Nginx 配置(如果有)

    • 如果你使用了 Nginx 作为反向代理,请检查配置文件是否正确指向了后端服务。
    • 示例配置:
      location /api/ {
          proxy_pass http://backend:8080;
      }
      

    6. 检查防火墙或安全组设置(如果是云服务器)

    • 如果你是在云服务器上部署,确保防火墙允许外部访问后端的端口(如 8080)。
    • 检查安全组规则,开放对应端口。

    ✅ 三、示例 Docker 配置(修改建议)

    如果你使用的是 docker-compose.yml 文件,请参考如下结构:

    version: '3'
    services:
      backend:
        image: your-backend-image
        ports:
          - "8080:8080"
        networks:
          - ai_cs_network
    
      frontend:
        image: your-frontend-image
        ports:
          - "80:80"
        depends_on:
          - backend
        networks:
          - ai_cs_network
    
    networks:
      ai_cs_network:
        driver: bridge
    

    重点提示:
    使用 depends_on 不保证服务已完全就绪,建议配合健康检查或脚本进行依赖判断。


    ✅ 四、前端访问后端的典型错误场景

    | 错误现象 | 可能原因 | |----------|----------| | 404 Not Found | 后端接口路径错误、服务未启动、网络不通 | | 502 Bad Gateway | Nginx 配置错误、后端未响应 | | Connection Refused | 端口未映射、服务未监听 0.0.0.0 |


    ✅ 五、推荐排查流程

    1. 检查后端容器日志 → 确认服务是否启动。
    2. 检查后端端口是否映射 → 确保可从外部访问。
    3. 检查前端请求地址是否正确 → 确保路径和域名正确。
    4. 检查网络是否互通 → 使用 curlping 测试容器间通信。
    5. 检查防火墙和安全组 → 确保端口开放。

    ✅ 六、代码修改建议(如果涉及)

    如果你的前端请求代码如下:

    fetch('http://localhost:8080/api/login', { method: 'POST' })
    

    请改为:

    // 如果前后端在同一 Docker 网络中
    fetch('http://backend:8080/api/login', { method: 'POST' })
    
    // 如果通过宿主机 IP 访问
    fetch('http://192.168.1.100:8080/api/login', { method: 'POST' })
    

    ✅ 七、总结

    你遇到的 404 错误 很可能是由于 网络配置不当路径不匹配 导致的。建议按照上述步骤逐一排查,尤其是 后端服务是否监听 0.0.0.0前端访问的 URL 是否正确

    如果你愿意提供具体的日志内容,我可以进一步帮你定位具体原因。

    评论

报告相同问题?

问题事件

  • 修改了问题 4月23日
  • 创建了问题 4月23日