CapRover部署Laravel应用出现NGINX 502错误求助
Laravel应用CapRover部署后出现NGINX 502错误排查
问题背景
在虚拟专用服务器(VDS)上通过CapRover部署Laravel应用时,部署命令执行无异常,php artisan migrate也成功创建了数据库表,但访问应用URL时CapRover返回NGINX 502错误。
相关配置文件
Dockerfile
ARG PHP_VERSION=${PHP_VERSION:-8.2} FROM php:8.2-fpm-alpine AS php-system-setup # 安装系统依赖 RUN apk add --no-cache dcron busybox-suid libcap curl zip unzip git RUN apk add --update nodejs npm # 安装PHP扩展 COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/ RUN install-php-extensions intl bcmath gd pdo_mysql opcache redis uuid exif pcntl zip # 安装supervisord COPY --from=ochinchina/supervisord:latest /usr/local/bin/supervisord /usr/local/bin/supervisord COPY --from=composer:latest /usr/bin/composer /usr/bin/composer FROM php-system-setup AS app-setup # 设置工作目录 ENV LARAVEL_PATH=/srv/app WORKDIR $LARAVEL_PATH COPY ./ /srv/app RUN composer install --ignore-platform-reqs --prefer-dist --no-scripts --no-dev --no-autoloader RUN npm install RUN chmod 777 -R $LARAVEL_PATH # 复制PHP配置 COPY ./.deploy/config/php/local.ini /usr/local/etc/php/conf.d/local.ini # 复制入口脚本 COPY ./.deploy/entrypoint.sh / ENTRYPOINT ["sh", "/entrypoint.sh"] # 启动应用 CMD php artisan serve --host=0.0.0.0 --port=8000 EXPOSE 8000
./.deploy/config/php/local.ini
memory_limit = 512M max_execution_time = 30 upload_max_filesize = 30M post_max_size = 35M
./.deploy/entrypoint.sh
composer dump-autoload --no-interaction --no-dev --optimize php artisan migrate --no-interaction --force
排查方向与解决建议
容器进程启动异常:
你的entrypoint.sh执行完dump-autoload和migrate后直接退出,没有执行后续的CMD命令。容器会在脚本执行完毕后停止,导致CapRover的NGINX无法连接到后端服务,引发502错误。
解决:在entrypoint.sh末尾添加exec "$@",让脚本执行完后继续运行CMD指定的命令:composer dump-autoload --no-interaction --no-dev --optimize php artisan migrate --no-interaction --force exec "$@"端口映射配置检查:
确认CapRover应用设置中,容器端口是否配置为8000(与Dockerfile里的EXPOSE一致)。端口不匹配会导致NGINX无法转发请求,触发502错误。容器日志排查:
通过CapRover面板查看应用的容器日志,检查是否有Laravel启动失败的报错,比如环境变量缺失、依赖未正确安装等问题。生产环境部署优化:
不建议在生产环境使用php artisan serve,性能和稳定性远不如PHP-FPM配合NGINX的组合。可调整Dockerfile,改用PHP-FPM作为服务,并配置容器内的NGINX处理请求,更符合生产环境标准。
内容的提问来源于stack exchange,提问作者mehmetakkus
相关产品推荐
相关产品推荐

