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

PHP-PM容器无法被同Docker Compose中其他容器访问的问题

问题解决:PHP-PM容器内部可访问,但Nginx代理容器无法连接

核心原因

PHP-PM默认仅绑定127.0.0.1(回环地址),这意味着服务仅在容器内部的回环接口监听请求。Docker Compose中不同容器属于同一网桥网络,它们需要通过容器的对外网络接口(对应0.0.0.0)才能互相访问,而你的PHP-PM配置未开放该访问权限。

解决方案

修改php_pm容器的Dockerfile,在ENTRYPOINT的PHP-PM启动命令中添加--host=0.0.0.0参数,让服务绑定所有可用网络接口:

ENTRYPOINT ["/ppm/vendor/bin/ppm", \
    "start", \
    "--static-directory=public/", \
    "--app-env=dev", \
    "--host=0.0.0.0",  # 新增此参数
    "--port=81", \
    "--socket-path=/ppm/run", \
    "--pidfile=/ppm/ppm.pid", \
    "--debug=1"]

重新构建并启动容器:

docker-compose build php_pm
docker-compose up -d

验证方法

进入proxy容器再次测试:

curl php_pm:81

此时即可正常获取PHP-PM的响应。

补充说明

  • EXPOSE 81只是Docker的端口声明,不会实际修改服务的绑定地址,必须通过服务自身配置(此处为PHP-PM的--host参数)开放对外访问。
  • depends_on仅保证proxy容器在php_pm容器之后启动,但不会等待PHP-PM服务完全就绪。若遇到连接超时(而非连接拒绝),可添加健康检查确保服务就绪后再启动proxy。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:45:34