Docker容器中Laravel集成MPDF无法加载本地图片URL问题
解决方案:Docker环境下MPDF无法访问本地URL的问题
核心问题原因
Docker容器内的127.0.0.1指向容器自身,而非宿主机。你的MPDF运行在app容器中,当它请求http://127.0.0.1:8000时,实际是在请求app容器的8000端口,而该端口并未监听服务,因此出现连接拒绝错误。宿主机能正常访问是因为端口映射把8000转发到了nginx容器的80端口。
解决步骤
1. 修改.env配置中的APP_URL
将.env里的APP_URL改为Docker Compose中nginx服务的名称(同一网络内可直接通过服务名通信):
APP_URL=http://nginx/
2. 验证容器间通信
进入app容器执行curl命令,确认能正常访问图片:
docker exec -it f-scope-app curl http://nginx/uploads/report_templates/logo/logo-white.png
如果返回图片内容,说明配置生效。
3. 重启相关容器
修改配置后,重启app和nginx容器使配置生效:
docker-compose restart app nginx
补充说明
- 同一Docker Compose网络中的服务,可直接通过服务名(如
nginx、db)互相访问,无需使用IP或宿主机端口。 - 你的HTML代码中使用
{{url("...")}}会自动基于APP_URL生成正确的图片路径,无需修改HTML代码。
内容的提问来源于stack exchange,提问作者Daniyal Nasir
相关产品推荐
相关产品推荐

