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

我的Laravel Docker Compose文件异常,请求协助排查访问失效问题

排查Docker Compose环境无法访问的步骤

1. 检查Nginx站点配置

你的Nginx配置目录./docker-compose/nginx/conf.d下的站点配置文件(如default.conf)必须正确配置反向代理规则,才能将PHP请求转发到PHP容器。示例配置如下:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    # 这里要替换成你项目的入口文件所在目录,比如Laravel的public、ThinkPHP的public等
    root /var/www/public;

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

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # 用Docker Compose服务名`php`访问PHP容器,默认FPM端口为9000
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
  • 重点确认root路径是否匹配你的项目结构
  • 确保fastcgi_pass指向php:9000,这是Docker同网络内服务的访问方式

2. 验证PHP容器的FPM状态

PHP容器必须运行PHP-FPM服务才能处理Nginx转发的请求:

  • 进入PHP容器检查FPM进程:
docker exec -it cumax-php-db bash
ps aux | grep php-fpm
  • 检查你的PHP镜像构建文件(./docker-compose/php-81/build/Dockerfile)是否基于FPM镜像,比如:
FROM php:8.1-fpm-alpine
# 安装所需扩展,比如pdo_mysql
RUN docker-php-ext-install pdo_mysql
# 其他自定义配置...

如果使用的是php:8.1-cli版本镜像,Nginx无法转发请求,必须更换为FPM版本。

3. 检查容器运行状态与端口映射

  • 确认所有服务正常启动:
docker-compose ps

确保php、nginx等服务状态为Up

  • 验证Nginx端口映射是否生效:
curl http://localhost:8070

如果返回502 Bad Gateway,说明Nginx无法连接PHP-FPM;返回404则是文件路径或权限问题。

4. 调整文件权限

PHP容器内的项目目录权限可能导致无法读取文件,执行以下命令修正:

docker exec -it cumax-php-db chown -R www-data:www-data /var/www

(部分镜像可能使用nobody用户,需根据实际情况调整)

5. 通过日志定位具体问题

  • 查看Nginx错误日志:
docker logs cumax-nginx
  • 查看PHP容器日志:
docker logs cumax-php-db

日志会明确显示错误原因,比如连接超时、文件不存在、权限不足等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:50:25