programing

공식 PHP Docker 이미지 접근 방식을 사용하여 php-redis 확장을 설치하는 방법은 무엇입니까?

goodsources 2022. 12. 29. 20:34
반응형

공식 PHP Docker 이미지 접근 방식을 사용하여 php-redis 확장을 설치하는 방법은 무엇입니까?

PHP-FPM 이미지를 빌드하고 싶다.php-redis예를 들어 이 Docker 파일 php:5.6-fpm을 사용하여 PHP Docker 공식 이미지를 기반으로 확장됩니다.

문서에서는 이 방법으로 확장을 설치할 수 있으며 수동으로 확장 종속성을 설치할 수 있다고 합니다.

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하지만 위의 방법을 사용하여 어떻게 설치하면 좋을까요?

Redis는 "php-src"에 포함된 확장자가 아니므로 사용할 수 없습니다.docker-php-ext-install. PECL 사용:

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

알파인 php 7.3.5에서는 다음을 사용할 수 있습니다.

RUN apk add --no-cache pcre-dev $PHPIZE_DEPS \
        && pecl install redis \
        && docker-php-ext-enable redis.so

가장 쉬운 방법은 다음과 같습니다.

RUN pecl install redis && docker-php-ext-enable redis

;)

도커 이미지의 현재 PHP 7 버전에 대한 약간 수정된 버전의 starikovs스카이드된 답변(테스트 완료일)php:7.0.8-fpm-alpine그리고.php:7.0.8-alpine).

새로 출시된 것을 사용합니다.3.0버전(2016년 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 도커 이미지php-redis 확장을 설치하는 두 가지 방법을 찾았습니다.이하에 나타냅니다.

첫 번째 방법은 소스에서 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가 대답한 대로 PECL로 할 수 있지만, 제 경우 PECL은 기본적으로 설치되어 있지 않습니다.

RUN pecl install -o -f redis \
&&  rm -rf /tmp/pear \
&&  echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini

@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

세션 핸들러로서 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

이는 알파인 이미지에 적용됩니다.

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

편집: 누락된 백슬래시가 추가되었습니다.

몇 가지 방법을 시도했다.알파인 php 7.3.5에서는 다음을 사용할 수 있습니다.

RUN apk add --no-cache pcre-dev $PHPIZE_DEPS \
        && pecl install redis \
        && docker-php-ext-enable redis.so

PECL과 PHP 공식 도커 확장 스크립트를 조합하여 사용하고 있습니다.

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

도커 이미지의 현재 버전에 대한 약간 수정된 스타리코프 버전과 하늘색 답변입니다.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

Docker 파일에서 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

이미지 php:7.2-fpm-alpine의 경우.

RUN apk add autoconf gcc g++ make && pecl install redis && docker-php-ext-enable redis

다음 날짜 이전에 업데이트해야 할 수 있습니다.

apk --update upgrade

언급URL : https://stackoverflow.com/questions/31369867/how-to-install-php-redis-extension-using-the-official-php-docker-image-approach

반응형