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

如何实现Docker同一container内不同应用的HTTP通信?

同容器内多站点应用HTTP通信解决方案

错误根因说明

你之前的两种操作本身就存在逻辑问题:

  • Docker Compose的links配置仅用于不同容器之间的网络别名解析,给当前服务配置指向自身的link属于错误用法,自然会触发递归错误
  • php:8080/app这个地址是Docker内部网络的跨容器访问地址,同容器内的进程通信不需要走Docker网络解析,也不需要用到对外映射的8080端口

修复步骤

1. 确认容器内部Web服务监听配置

首先进入容器执行netstat -tunlp确认Web服务(Nginx/Apache/PHP内置服务)的监听端口和地址:

  • 常规Nginx部署的多站点默认会监听0.0.0.0:80或者127.0.0.1:80(该端口是容器内部端口,和对外映射的8080无关)
  • 如果是用php artisan serve单独启动子应用,确认启动参数添加了--host=127.0.0.1,同容器内访问不需要开放到0.0.0.0

2. 修改Laravel调用配置

将wrapper_app配置项的URL替换为本地环回地址即可,示例:
如果容器内部Web服务监听80端口,直接在.env文件填写:

WRAPPER_APP_URL=http://127.0.0.1/app

如果APP子应用单独监听了其他端口比如8000,对应修改为:

WRAPPER_APP_URL=http://127.0.0.1:8000

3. 连通性验证

修改配置后先进入容器执行curl命令验证接口是否正常返回:

curl http://127.0.0.1/app

如果返回正常,再从ACADEMY-SAAS应用发起请求即可。

可选优化方案

如果两个子应用运行在同一个PHP环境下,完全可以跳过HTTP请求,直接在ACADEMY-SAAS应用内引入APP应用的业务类调用对应方法,性能远高于HTTP通信,也不会出现网络连通性问题。


内容的提问来源于stack exchange,提问作者José Victor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:24:04