복붙노트

[REDIS] 어떻게 공식 PHP 도커 이미지 접근법을 사용하여 PHP-레디 스 확장을 설치 하는가?

REDIS

어떻게 공식 PHP 도커 이미지 접근법을 사용하여 PHP-레디 스 확장을 설치 하는가?

나는 내 PHP-FPM 이미지를 구축하려면 PHP - 레디 스이 Dockerfile 사용하여, 예를 들어 공식 PHP 도커 이미지를 기반으로 확장, : 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"]

도커 나는 그것을 설치하지 않고 PHP5 - 레디 스를 설치 apt-get을. 그러나 어떻게 위의 방법을 사용하여 설치할 수 있습니까?

해결법

  1. ==============================

    1.레디 스 그러므로 당신이 고정 표시기가-PHP-EXT 설치 사용할 수 없습니다 "PHP-SRC"에 포함되어 확장되지 않습니다. 사용 PECL :

    레디 스 그러므로 당신이 고정 표시기가-PHP-EXT 설치 사용할 수 없습니다 "PHP-SRC"에 포함되어 확장되지 않습니다. 사용 PECL :

    RUN pecl install -o -f redis \
    &&  rm -rf /tmp/pear \
    &&  docker-php-ext-enable redis
    
  2. ==============================

    2.내 의견은, 가장 쉬운 방법은 다음과 같습니다

    내 의견은, 가장 쉬운 방법은 다음과 같습니다

    RUN은 레디 스를 설치 PECL && 레디 스를 고정 표시기-PHP-EXT가 활성화

    ;)

  3. ==============================

    3.나는 공식 PHP-FPM 도커 이미지의 PHP-레디 스 확장을 설치하는 두 가지 방법을 발견했습니다. 여기 있습니다:

    나는 공식 PHP-FPM 도커 이미지의 PHP-레디 스 확장을 설치하는 두 가지 방법을 발견했습니다. 여기 있습니다:

    첫 번째 방법은 소스에서 레디 스를 컴파일하고 설치하는 것입니다.

    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
    

    고정 표시기-PHP-EXT-설치 스크립트는 PHP-FPM 이미지에 포함되어 있으며이를 확장을 컴파일하고 설치할 수 있습니다.

    당신이 그것을 할 수있는 두 번째 방법은 PECL 함께.

    TimWolla 대답, 당신은 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. ==============================

    4.약간 현재 (: 7.0.8-FPM-고산 및 PHP : 7.0.8-고산 PHP를 테스트)에 고정 표시기 이미지의 PHP 7 버전 starikovs 및 skyred 답변의 버전을 수정.

    약간 현재 (: 7.0.8-FPM-고산 및 PHP : 7.0.8-고산 PHP를 테스트)에 고정 표시기 이미지의 PHP 7 버전 starikovs 및 skyred 답변의 버전을 수정.

    PHP 7의 새로 출시 된 3.0 버전 (6 월 2016) 사용합니다.

    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
    
  5. ==============================

    5.@starikovs 답변에 따라. 나는 고정 표시기 스타일에 대한 변수를 추가했습니다.

    @starikovs 답변에 따라. 나는 고정 표시기 스타일에 대한 변수를 추가했습니다.

    # 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
    
  6. ==============================

    6.당신이 세션 핸들러로 레디 스를 사용하려면;

    당신이 세션 핸들러로 레디 스를 사용하려면;

    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 레디 스 확장을 사용하려면 (의 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
    
  7. ==============================

    7.나는 PECL 및 PHP 공식 고정 표시기 확장 스크립트의 조합을 사용하고 있습니다

    나는 PECL 및 PHP 공식 고정 표시기 확장 스크립트의 조합을 사용하고 있습니다

    RUN pecl bundle -d /usr/src/php/ext redis \
    && rm /usr/src/php/ext/redis-*.tgz \
    && docker-php-ext-install redis
    

    PHP7 위해 당신은 공식 레디 스의 PECL 해제 또는 사용의 자식 기다릴 필요가 :

    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
    
  8. ==============================

    8.이 고산 이미지 작동합니다 :

    이 고산 이미지 작동합니다 :

    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
    

    편집 : 추가없는 백 슬래시

  9. ==============================

    9.살짝 고정 표시기 이미지의 현재 버전 starikovs 및 skyred 답변의 버전을 수정. 5-FPM-고산 : PHP에서 테스트

    살짝 고정 표시기 이미지의 현재 버전 starikovs 및 skyred 답변의 버전을 수정. 5-FPM-고산 : PHP에서 테스트

    # 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
    
  10. ==============================

    10.당신의 Dockerfile에서 당신은 REPO를 복제 할 수와 함께 설치한다 :

    당신의 Dockerfile에서 당신은 REPO를 복제 할 수와 함께 설치한다 :

    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
    
  11. from https://stackoverflow.com/questions/31369867/how-to-install-php-redis-extension-using-the-official-php-docker-image-approach by cc-by-sa and MIT license