我想基于official PHP Docker image构建具有php-redis
扩展名的PHP-FPM图像,例如,使用此Dockerfile:php:5.6-fpm。
文档说我可以这种方式安装扩展,手动安装扩展的依赖项:
FROM php:5.6-fpm
# Install modules (iconv, mcrypt and gd extensions)
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd
CMD ["php-fpm"]
没有Docker我用apt-get install php5-redis
安装了它。但是如何使用上述方法安装它?
答案 0 :(得分:48)
Redis不是“php-src”中包含的扩展名,因此您无法使用docker-php-ext-install
。使用PECL:
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
答案 1 :(得分:26)
我的意见,最简单的方法是:
RUN pecl install redis && docker-php-ext-enable redis
)
答案 2 :(得分:15)
当前PHP 7版本泊坞窗图片的starikovs和skyred答案的略微修订版本(在php:7.0.8-fpm-alpine
和php:7.0.8-alpine
上测试过)。
使用新发布的3.0
版本(2016年6月)作为PHP 7。
ENV PHPREDIS_VERSION 3.0.0
RUN mkdir -p /usr/src/php/ext/redis \
&& curl -L https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 \
&& echo 'redis' >> /usr/src/php-available-exts \
&& docker-php-ext-install redis
答案 3 :(得分:13)
我找到了两种方法为官方php-redis安装php-fpm Docker image扩展程序。他们在这里:
第一种方法是从源代码编译redis并安装。
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mv phpredis-2.2.7 /usr/src/php/ext/redis \
&& docker-php-ext-install redis
docker-php-ext-install
脚本包含在php-fpm图像中,可以编译扩展并安装它们。
第二种方法是使用PECL。
作为TimWolla answered,您可以使用PECL执行此操作,但在我的情况下,默认情况下不会安装PECL。
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
答案 4 :(得分:7)
如果要将redis用作会话处理程序;
RUN { \
echo 'session.save_handler = redis'; \
echo 'session.save_path = tcp://redis:6379'; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
如果你想在2015年使用带有PHP 7的redis扩展(借鉴skyred的答案);
ENV PHPREDIS_VERSION php7
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mv phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \
&& docker-php-ext-install redis
答案 5 :(得分:2)
我正在使用PECL和PHP官方docker扩展脚本的组合
RUN pecl bundle -d /usr/src/php/ext redis \
&& rm /usr/src/php/ext/redis-*.tgz \
&& docker-php-ext-install redis
对于PHP7,您需要等待正式的redis pecl发布或使用git:
RUN apt-get update \
&& apt-get install git -y -q \
&& git clone -b php7 https://github.com/phpredis/phpredis.git /usr/src/php/ext/redis \
&& docker-php-ext-install redis
答案 6 :(得分:2)
尝试了几种方法。在高山php 7.3.5上,我们可以使用:
RUN apk add --no-cache pcre-dev $PHPIZE_DEPS \
&& pecl install redis \
&& docker-php-ext-enable redis.so
答案 7 :(得分:0)
当前版本的泊坞窗图片的starikovs和skyred答案的略微修订版本。 在php上测试:5-fpm-alpine
# install phpredis extension
ENV PHPREDIS_VERSION 2.2.8
ADD https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz /tmp/redis.tar.gz
RUN tar xzf /tmp/redis.tar.gz -C /tmp \
&& mkdir -p /usr/src/php/ext \
&& mv /tmp/phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \
&& echo 'redis' >> /usr/src/php-available-exts \
&& docker-php-ext-install redis \
&& rm -rf /usr/src/php/ext/redis
答案 8 :(得分:0)
在您的Dockerfile中,您可以克隆存储库并使用以下命令进行安装:
RUN git clone https://github.com/phpredis/phpredis.git /tmp/phpredis \
&& cd /tmp/phpredis \
&& git checkout -b 3.1.2 \ ## or the release you need #
&& phpize \
&& ./configure \
&& make \
&& make install
答案 9 :(得分:0)
这适用于高山图像:
RUN set -xe \
&& apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \
&& pecl install -o -f redis \
&& echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
&& rm -rf /usr/share/php \
&& rm -rf /tmp/* \
&& apk del .phpize-deps
答案 10 :(得分:0)
对于图片 php:7.2-fpm-alpine。
RUN apk add autoconf gcc g++ make && pecl install redis && docker-php-ext-enable redis
您可能需要提前更新
apk --update upgrade