Docker网络转发失败:PHP应用本地访问连接重置问题求助
问题解决:本地访问Docker内PHP应用出现
Connection reset by peer 问题根源
从Docker日志能明确看到,PHP开发服务器启动时仅绑定了容器内部的回环地址:
2024-03-27 19:25:34 [Wed Mar 27 18:25:34 2024] PHP 8.3.4 Development Server (http://127.0.0.1:36001) started
这种情况下,服务只接收容器内部发起的请求,即便Docker配置了端口映射,宿主机的请求也无法穿透到容器内的服务,最终触发连接重置错误。
解决方案
修改PHP开发服务器的启动命令,将绑定地址改为0.0.0.0,让服务监听容器的所有网卡:
php -S 0.0.0.0:36001
具体修改位置
若启动命令写在Dockerfile中:
找到类似命令行,将127.0.0.1替换为0.0.0.0:# 修改前 CMD ["php", "-S", "127.0.0.1:36001"] # 修改后 CMD ["php", "-S", "0.0.0.0:36001"]若通过docker-compose.yml的command字段启动:
在web服务下添加或修改command配置:services: web: # ...其他原有配置 command: php -S 0.0.0.0:${WEB_PORT?error}
验证修改
重启容器后:
- 容器内执行
netstat -tulpn,确认服务监听地址为0.0.0.0:36001 - 本地执行
curl localhost:36001,即可正常获取响应
内容的提问来源于stack exchange,提问作者peterhillie
相关产品推荐
相关产品推荐

