개발 꿀팁/PHP

Docker의 PHP 설치 방법

Jammie 2022. 7. 26. 17:20
반응형

1. PHP 소스
도크를 위해서r 미러링은 최소이며, PHP의 소스 파일은 압축 패킷의 형태로 미러링되어 있으며, docker-php-source 빠른 스크립트를 제공하여 소스 파일의 압축 패킷의 압축 해제(extract) 및 압축 해제 후의 파일을 삭제(delete)하는 작업을 수행합니다.

예:

FROM php:7.1-apache
RUN docker-php-source extract \
    # 여기에서 필요한 작업을 시작합니다 \
    && docker-php-source delete

주의: 삭제하지 않으면 압축 해제된 파일이 미러링된 파일 크기를 크게 늘릴 수 있습니다.

2. 설치 확장
2.1. 코어 확장
여기 주로 공식 docker-php-ext-confi를 사용하는데gure와 docker-php-ext-install 빠른 스크립트, 다음과 같습니다.

FROM php:7.1-fpm
RUN apt-get update \
	# 의존 관계를 수동으로 설치해야 합니다
	&& apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
    # 설치 확장
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    # 사용자 정의 설정이 필요한 경우
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

주의: 여기서 docker-php-ext-configure와 docker-php-ext-install은 이미 docker-php-source의 동작을 포함하고 있으므로 모든 작업을 수동으로 수행할 필요가 없습니다.

2.2. PECL 확장
일부 확장은 PHP 소스 파일에 포함되지 않기 때문에 PECL(PEAR을 통해 패키지)을 사용해야 합니다.pecl install로 확장 설치 후 docker-php로 제공-ext-enable 빠른 발다음 예시와 같이 확장을 사용합니다

FROM php:7.1-fpm
RUN apt-get update \
	# 수동 설치 종속성
	&& apt-get install -y libmemcached-dev zlib1g-dev \
	# 설치에 필요한 확장
   && pecl install memcached-2.2.0 \
   # 확장 사용하기
   && docker-php-ext-enable memcached

2.3. 기타 확장
PHP에 없는 것도 있고 PECL 확장 라이브러리에서 소스 번들을 확장하지 않고, 다음 예제처럼 확장 프로그램 소스를 다운로드하여 컴파일하여 설치할 수 있습니다

FROM php:5.6-apache
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
    && mkdir -p xcache \
    && tar -xf xcache.tar.gz -C xcache --strip-components=1 \
    && rm xcache.tar.gz \
    && ( \
        cd xcache \
        && phpize \
        && ./configure --enable-xcache \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r xcache \
    && docker-php-ext-enable xcache

참고: docker-php-ext-* 스크립트는 임의의 절대 경로를 받아들인다(상대 경로를 지원하지 않기 때문에 시스템에 내장된 확장 프로그램과 구별할 수 있다). 따라서 위의 예에서도 다음과 같이 쓸 수 있다

FROM php:5.6-apache
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
    && mkdir -p /tmp/xcache \
    && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \
    && rm xcache.tar.gz \
    && docker-php-ext-configure /tmp/xcache --enable-xcache \
    && docker-php-ext-install /tmp/xcache \
    && rm -r /tmp/xcache
반응형