공식 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
'programing' 카테고리의 다른 글
PHP 어레이에서 중복된 값을 검출하는 방법 (0) | 2022.12.29 |
---|---|
컴파일된 Java 클래스를 잠그는 방법은 무엇입니까? (0) | 2022.12.29 |
java.util을 저장합니다.밀리초의 정밀도로 MySQL DB의 날짜 (0) | 2022.12.29 |
localhost에서 Docker MySQL 컨테이너에 연결하시겠습니까? (0) | 2022.12.29 |
범용 메서드를 사용하는 경우 및 와일드 카드를 사용하는 경우 (0) | 2022.12.29 |