PHP 공식 Docker 컨테이너에 redis exension을 추가하는 메모

3046 단어 PHP도커Redis
PHP의 앱 서버 클러스터를 짜서 Redis에서 세션을 공유하고 싶었지만 과제가 있었으므로 비망록입니다.

Docker 컨테이너에서 실현하고 싶은 것은이 그림의 내용입니다. 물론, redis의 클러스터링도 별도로 검토합니다만, PHP와 redis의 접속을 Docker 컨테이너상에서, 어떻게 설정할까? 자동화하여 몇 번이라도 동일한 소프트웨어 구성을 만들 수 있을까? 라는 과제입니다.



도전



Docker Store PHP 공식 리포지토리의 컨테이너 이미지에 redis 확장을 추가하려고하면 다음과 같이 작성하면 실패합니다.
RUN docker-php-ext-install redis

오류 메시지를 읽으면 추가 할 수있는 대상으로 redis가 포함되어 있지 않다는 것을 알 수 있습니다.
Step 4/6 : RUN docker-php-ext-install mcrypt pdo_mysql redis
 ---> Running in 6a2e232a0958
error: /usr/src/php/ext/redis does not exist

usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
   ie: /usr/local/bin/docker-php-ext-install gd mysqli
       /usr/local/bin/docker-php-ext-install pdo pdo_mysql
       /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

if custom ./configure arguments are necessary, see docker-php-ext-configure

Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mcrypt mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zip
ERROR: Service 'app' failed to build: The command '/bin/sh -c docker-php-ext-install mcrypt pdo_mysql redis' returned a non-zero code: 1

거기서, 구글 선생에게 물어 보면, Stackoverflow 에 How to install php-redis extension using the official PHP Docker image approach? 라고 하는 딱 기사를 발견했다. 그러나 다양한 방법이있었습니다.

해결책



몇 가지 방법을 시도하고 가장 간단하게, 이해하기 쉬운 방법은 다음 Dockerfile이었습니다. 여분의 곳도 들어 있지만 (웃음)
php redis extention을 복제하고 docker-php-ext-install에 추가하면 컴파일, 설치 및 구성 파일을 내보낼 수 있습니다. 이것만으로 갈 수 있다고는, 좀처럼 신경이 쓰이네요.

Dockerfile
FROM php:7-fpm

RUN apt-get update \
    && apt-get install -y libmcrypt-dev mysql-client \
    && apt-get install -y zip unzip git \
    && apt-get install -y vim

RUN git clone -b php7 https://github.com/phpredis/phpredis.git /usr/src/php/ext/redis 

RUN docker-php-ext-install mcrypt pdo_mysql session json mbstring redis

RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer

WORKDIR /var/www

감상



Docker 컨테이너를 빌드하려면 서버 구축과는 다른 노하우가 필요하네요. 토호호

좋은 웹페이지 즐겨찾기