使用Docker安装运行Laravel Octane RoadRunner的部署问题咨询
问题描述
我计划使用Docker安装并运行Laravel Octane RoadRunner,目前构建Docker容器所需的前置环境已全部配置完成,包含Docker Desktop、WSL 2运行环境、PHP 8。
我所使用的Dockerfile如下:
使用的docker-compose.yml配置文件如下:
当前Docker Desktop返回的错误日志如下:
烦请协助排查部署过程中出现的问题。
问题排查方案
- 确认RoadRunner二进制文件已正确安装
Laravel Octane的RoadRunner驱动需要rr可执行文件存在于系统PATH或项目根目录下,缺失该文件是最常见的启动失败原因。你可以在Dockerfile中通过项目依赖直接安装官方二进制:
# 安装RoadRunner CLI后拉取对应架构的rr二进制 RUN composer require spiral/roadrunner-cli --dev \ && ./vendor/bin/rr get --no-interaction --location /usr/local/bin \ && chmod +x /usr/local/bin/rr
- 校验Octane驱动配置
检查项目.env文件是否显式配置OCTANE_SERVER=roadrunner,未指定时Octane会默认尝试加载Swoole驱动,会抛出Swoole扩展不存在的报错。你也可以在启动命令中强制指定驱动,规避环境配置影响。 - 修正容器启动参数
确保docker-compose.yml中的启动命令符合Octane运行要求,参考配置如下:
command: php artisan octane:start --server=roadrunner --host=0.0.0.0 --port=8000
注意host必须设置为0.0.0.0才能允许容器外部访问服务,端口需要和docker-compose中暴露的端口保持一致。
- 检查PHP扩展依赖
确认Dockerfile中已经安装Octane运行必需的扩展:pcntl、posix、curl、mbstring、xml、zip,其中pcntl和posix是进程管理核心依赖,缺失会直接导致启动失败。 - 调整目录权限配置
确保容器内运行Octane的用户对项目目录有读写权限,不要直接使用root用户运行服务,避免出现日志写入、缓存生成失败的问题。可以在Dockerfile中增加如下权限配置:
RUN chown -R www-data:www-data /var/www/html \ && chmod -R 755 /var/www/html USER www-data
内容的提问来源于stack exchange,提问作者mofiroz
相关产品推荐
相关产品推荐

