docker - Alpine OS 上的 Php7 Redis 客户端

标签 docker redis dockerfile php-7 alpine-linux

我使用 alpine 3.5 作为基础图像制作了一个 docker 图像。我希望我的 php 应用程序在容器内运行以与 redis 服务器通信。但我在 Alpine 中找不到任何 php7-redis 客户端。

有解决办法吗?我尝试使用 pecl 安装 redis,但 alpine 中没有 pecl 包。我尝试使用 pear,但 pear 没有 redis 包。对这个问题有什么想法吗?

最佳答案

对于Alpine 3.6之前的版本,比如现在官方PHP Alpine image (Alpine 3.4),您需要从源代码构建扩展。您还需要一些依赖项:autoconfgitgcc/g++make .例如,这是一个完整的 Dockerfile,用于在 Alpine 上构建的最新稳定版本的 PHP,安装并启用了 php7 的 redis 扩展:

FROM php:alpine

RUN apk add --no-cache autoconf git g++ make

RUN \
  git clone https://github.com/phpredis/phpredis.git && \
  cd phpredis && \
  git checkout php7 && \
  phpize && \
  ./configure && \
  make && make install && \
  docker-php-ext-enable redis

如果您想要一个较小的图像,您可以删除 phpredis 目录和之后克隆和构建它所需的 deps。如果您没有使用官方 PHP 镜像,那么您需要用几个命令替换 docker-php-ext-enable redis 以将 redis.so 移动到哪里您需要它并将 extension=redis.so 行添加到您的 PHP 配置中。

关于docker - Alpine OS 上的 Php7 Redis 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177724/

相关文章:

python - 无法将 python 包下载到 Docker 镜像中

php - 从PHP Docker运行Python脚本

Php , laravel, socket - 水平缩放技术

docker - 如何获取正在运行的Docker容器的日志

redis - 是否有一种功能可以使 redis 中已排序集合的基数保持不变?

node.js - Array.push,数组保持为空

jenkins - Jenkins 用dockerfile构建docker镜像

amazon-web-services - AWS Docker 戈兰。 'eb deploy' 错误

docker - 在 tomcat docker 容器上提供 war 文件

linux - 如何杀死交互式 shell 和在其上运行的进程/作业?