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

Mac系统Docker容器中Laravel应用无法访问,求主机IP获取方法

MacOS Docker下Laravel容器访问失败的解决办法

一、关于Docker主机IP

在Mac的Docker Desktop环境里,完全不用找特殊的主机IP,直接用localhost(或127.0.0.1)就行——因为Docker Desktop在Mac上是基于虚拟机运行,但已经自动完成了本地与虚拟机的端口转发,本地访问localhost就能映射到容器的端口。你用docker inspect hello-laravel --format '{{.NetworkSettings.IPAddress}}'得到的172.17.0.2确实是容器自身的内部IP,这个IP属于Docker内网,本地浏览器无法直接访问,不用在这个IP上浪费时间。

二、访问失败的核心问题

你的启动命令是docker run -d --name hello-laravel -p 8080:9000 hello-laravel:latest,问题大概率出在端口匹配上,分两种情况解决:

情况1:容器内用PHP-FPM(9000端口)运行Laravel

PHP-FPM只是PHP的进程管理器,本身不处理HTTP请求,浏览器发送的HTTP请求它无法直接响应,必须搭配Nginx或Apache这类Web服务器转发请求:

  • 要么在容器内同时部署Nginx,配置Nginx将80端口的HTTP请求转发到PHP-FPM的9000端口,然后把容器80端口映射到本地8080,启动命令改为:
    docker run -d --name hello-laravel -p 8080:80 hello-laravel:latest
    
  • 要么用Docker Compose分别管理Nginx和Laravel容器,让它们在同一个Docker网络内通信。

情况2:容器内用artisan serve启动Laravel

Laravel的artisan serve命令默认启动的HTTP服务端口是8000,而非9000,解决办法二选一:

  1. 修改端口映射,将本地8080映射到容器的8000端口:
    docker run -d --name hello-laravel -p 8080:8000 hello-laravel:latest
    
  2. 启动artisan serve时指定9000端口,且必须绑定0.0.0.0(否则服务仅在容器内部可见):
    php artisan serve --host=0.0.0.0 --port=9000
    

三、验证访问的步骤

  1. 先查看容器日志,确认服务正常启动:
    docker logs hello-laravel
    
    若看到Laravel development server started: http://0.0.0.0:xxxx或Nginx启动成功的日志,说明服务没问题。
  2. 最后在浏览器中访问http://localhost:8080,尝试加载Laravel应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:12:56