frankenphp官方镜像默认不预装redis扩展,但标准运行时镜像支持用install-php-extensions一键安装;若为static-builder等精简镜像,则需在构建阶段用docker-php-ext-install redis静态编译。

FrankenPHP 官方镜像(dunglas/frankenphp)默认不预装 redis 扩展,但只要使用的是标准运行时镜像(非 static-builder 类精简版),就能直接用内置的 install-php-extensions 工具一键安装,无需编译、不用配环境。
确认你用的是支持 install-php-extensions 的镜像
执行以下命令检查容器是否具备该工具:
- 进入容器:
docker exec -it your-frankenphp-container bash - 运行:
which install-php-extensions
如果返回路径(如 /usr/local/bin/install-php-extensions),说明是官方运行时镜像,可继续;若提示 command not found,大概率你用的是 static-builder-musl 或自建精简镜像——这类镜像不带扩展安装器,需换方式处理(见下文“静态构建场景”)。
运行时容器中安装 redis 扩展(推荐)
确保容器能访问互联网(用于下载预编译包),在容器内执行:
install-php-extensions redis- 该命令会自动下载适配当前 PHP 版本(含架构、TS/NTS)的
redis.so,并启用它 - 安装完成后,建议重启容器:
docker restart your-frankenphp-container,避免 opcache 缓存旧配置导致扩展未生效
验证是否成功:php -m | grep redis 应输出 redis;或访问 /healthz 或运行 php -r "new Redis(); echo 'OK';" 测试类加载。
静态构建(multi-stage)中集成 redis
若你使用 static-builder-musl 镜像做生产构建(例如基于 dunglas/frankenphp:static-builder-musl),install-php-extensions 不可用,必须在 Dockerfile 构建阶段显式安装:
- 确保基础镜像已含构建工具(
static-builder-musl默认包含) - 在构建阶段添加:
RUN docker-php-ext-install redis - 注意:
pecl install redis在此镜像中不可用(无 pear / pecl) - 该方式生成的扩展是静态链接的,体积更小,但无法在运行时动态增删
验证与常见问题
扩展装完不代表立刻可用,还需确认:
- Redis 服务本身已运行(FrankenPHP 只提供 PHP 客户端,不附带 Redis 服务)
- PHP 应用连接地址正确(如
127.0.0.1:6379或 Docker 网络中的服务名) - 若用
pconnect()或连接池,注意 FrankenPHP 的 worker 生命周期可能影响持久连接复用 - Windows 或 WSL 用户若本地开发,仍需单独安装 Redis Server(如
sudo apt install redis-server或官网二进制)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











