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

Docker容器间连接失败:Alpine Nginx容器互通问题求助

解决Alpine容器间Nginx服务连接拒绝问题

核心问题:容器间通信端口错误

你在frontend容器内用http://dashboard:5001访问dashboard服务是错误的——5001是宿主机的端口映射,容器间通信需要使用容器内部的服务端口。

查看你的配置:

  • dashboard容器的Nginx监听内部80端口(Nginx配置里listen 80;)
  • docker-compose中的5001:80只是将宿主机的5001端口转发到容器的80端口

所以正确的访问地址应该是:

$response = $http->get('http://dashboard:80');

额外排查步骤

如果修改端口后仍无法连接,按以下步骤验证:

1. 确认Nginx监听所有网卡

检查Nginx配置的listen指令,确保不是仅监听localhost:

# 正确写法(监听容器所有网卡的80端口)
listen 80;
# 或明确指定
listen 0.0.0.0:80;

如果写成listen localhost:80;,同网络的其他容器将无法访问该服务。

2. 检查Supervisor是否启动Nginx进程

你的容器用Supervisor管理进程,需确保supervisord.ini中配置了Nginx的启动命令,示例配置:

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:php-fpm]
command=/usr/sbin/php-fpm8 -F
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

进入dashboard容器执行supervisorctl status,确认nginx进程处于RUNNING状态。

3. 容器内直接测试连接

进入frontend容器执行命令验证连通性:

# 测试访问dashboard的80端口
curl http://dashboard:80
# 检查端口是否开放
nc -zv dashboard 80

总结

最直接的修复是将Guzzle请求的端口从5001改为80,同时确保Nginx在容器内正确监听所有网卡,且Supervisor正常启动了Nginx服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:15:38