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

本地通过Dockerfile全新安装Laravel后无法显示默认页面

解决Laravel容器化后访问返回ERR_EMPTY_RESPONSE的问题

以下是逐步排查和修复的步骤:

1. 确认容器内服务是否监听指定端口

先获取运行中的容器ID,进入容器检查端口状态:

docker ps
docker exec -it <你的容器ID> bash
# 检查8080端口监听情况
netstat -tulpn | grep 8080
# 无netstat时用ss命令
ss -tulpn | grep 8080

如果未查到监听8080的进程,说明Web服务未正确启动或端口配置错误。

2. 核对Dockerfile的启动命令配置

Laravel容器化常用两种启动方式,对应检查:

用Artisan Serve启动

必须绑定0.0.0.0(允许外部访问)并使用环境变量PORT:

# 错误写法(固定端口+仅本地监听)
CMD ["php", "artisan", "serve", "--host=127.0.0.1", "--port=8000"]
# 正确写法
CMD ["sh", "-c", "php artisan serve --host=0.0.0.0 --port=$PORT"]

若之前Dockerfile是固定端口,改成动态端口写法后重新构建镜像运行。

用Nginx+PHP-FPM启动

检查Nginx配置是否监听$PORT,且指向Laravel的public目录:
Nginx配置示例:

server {
    listen ${PORT} default_server;
    root /var/www/html/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

同时确保Dockerfile中正确复制该配置,且启动了Nginx和PHP-FPM进程(比如用supervisord管理多进程)。

3. 查看容器日志定位错误

容器显示运行但服务异常时,日志会给出关键线索:

docker logs <你的容器ID>

常见问题包括:

  • PHP扩展缺失(如mbstring、pdo_mysql等Laravel必需扩展)
  • storage或bootstrap/cache目录无写入权限
  • .env文件未设置APP_KEY(Laravel启动必备)

4. 验证Laravel环境配置

进入容器后检查APP_KEY是否存在:

php artisan key:generate --show

若输出为空,执行php artisan key:generate生成,同时确认.env中APP_ENV为local(避免生产环境调试限制)。

5. 测试容器内部访问

在容器终端内直接访问服务,确认服务本身是否正常:

curl http://localhost:8080

若容器内访问正常但外部不行,说明服务仅监听127.0.0.1,改为监听0.0.0.0即可解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:15:06