How to install php-redis extension using the official PHP Docker image approach?
我想基于官方PHP Docker映像构建扩展名为
文档说我可以通过这种方式安装扩展,手动安装扩展的依赖项:
1 2 3 4 5 6 7 8 9 10 11 | 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的情况下,我使用
Redis不是" php-src"中包含的扩展,因此您不能使用
1 2 3 | RUN pecl install -o -f redis \ && rm -rf /tmp/pear \ && docker-php-ext-enable redis |
我认为,最简单的方法是:
;)
当前PHP 7版本的docker映像的starikovs的略微修订版??本和skyred答案(在
使用PHP 7的最新发布的
1 2 3 4 5 6 | 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 |
我发现了两种安装官方php-fpm Docker映像的php-redis扩展的方法。他们来了:
第一种方法是从源代码编译redis并进行安装。
1 2 3 4 5 | 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 |
第二种方法是使用PECL。
正如TimWolla回答的那样,您可以使用PECL来完成此操作,但就我而言,默认情况下未安装PECL。
1 2 3 | RUN pecl install -o -f redis \ && rm -rf /tmp/pear \ && echo"extension=redis.so"> /usr/local/etc/php/conf.d/redis.ini |
基于@starikovs答案。我为docker style添加了一个变量。
1 2 3 4 5 6 7 8 | # install phpredis extension ENV PHPREDIS_VERSION 2.2.7 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 |
如果要使用redis作为会话处理程序;
1 2 3 4 | 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年将Redis扩展与PHP 7一起使用(摘自skyred的回答);
1 2 3 4 5 6 7 | 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 |
我正在使用PECL和PHP官方docker扩展脚本的组合
1 2 3 | 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:
1 2 3 4 | 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 |
这适用于高山图像:
1 2 3 4 5 6 7 | 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 |
编辑:添加了缺少的反斜杠
在您的Dockerfile中,您可以克隆存储库并使用以下命令进行安装:
1 2 3 4 5 6 7 | 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 |
Starikovs的略微修订版??本和docker映像的当前版本的skyred答案。
在php:5-fpm-alpine上测试
1 2 3 4 5 6 7 8 9 10 | # 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 |