Laravel项目Docker运行缓慢,Windows本地启动路由404求助
Laravel项目问题排查方案
一、php artisan serve 路由全404问题
- 核对路由注册情况
运行php artisan route:list,检查输出的路由URI、请求方法是否与你访问的地址完全匹配,注意是否存在路由前缀、域名限制等规则。 - 修正APP_URL配置
打开项目根目录的.env文件,确保APP_URL与你访问的地址一致(例如http://localhost:8000),Laravel路由生成依赖该配置,尤其是命名路由跳转场景。 - 验证核心入口文件
检查public/index.php的核心引用是否正确:require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; - 排查中间件拦截
临时注释全局中间件(app/Http/Kernel.php中的$middleware数组)或路由绑定的中间件,测试是否因中间件逻辑(如HTTPS强制跳转、IP限制)导致请求被拦截。 - 确认路由加载逻辑
检查bootstrap/app.php是否正确注册了路由服务,是否存在仅加载特定环境路由的自定义逻辑。
二、Docker运行缓慢问题优化
- 调整Docker资源分配
打开Docker Desktop设置,分配至少2核CPU、4GB内存,默认资源配额不足会导致Laravel启动及运行卡顿。 - 优化镜像与挂载
- 使用轻量级基础镜像(如
php:8.2-fpm-alpine替代php:8.2-fpm),减少镜像体积与启动时间。 - 将项目存储在WSL2文件系统中,再通过Docker挂载WSL目录,避免Windows本地目录挂载的性能损耗。
- 使用轻量级基础镜像(如
- 启用缓存优化(生产环境适用)
在容器内执行:
开发环境频繁修改配置/路由时请勿使用。php artisan config:cache php artisan route:cache
三、WSL2连接XAMPP MySQL失败问题
- 修改MySQL绑定地址
打开XAMPP的my.ini(或my.cnf),将bind-address改为0.0.0.0,重启MySQL服务。 - 配置防火墙与访问权限
- 允许Windows防火墙放行MySQL默认端口(3306),或临时关闭防火墙测试。
- 在MySQL中授权用户跨IP访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;
- 配置正确的DB_HOST
在WSL2终端执行cat /etc/resolv.conf,获取nameserver对应的Windows IP,将Laravel.env中的DB_HOST设置为该IP,而非localhost或127.0.0.1。
内容的提问来源于stack exchange,提问作者Michael David
相关产品推荐
相关产品推荐

