docker环境安装php扩展

878 阅读1分钟

扩展安装工具

docker-php-source

下载并解压扩展tar包,使用完毕后需要删除tar包

FROM php:7.4-cli
RUN docker-php-source extract \
    # do important things \
    && docker-php-source delete

docker-php-ext-configure

安装前需要配置的扩展,已包含docker-php-source

docker-php-ext-install

配合上一个命令使用

docker-php-ext-enable

用来安装pecl 方式安装的扩展,本质就是添加一行extension=xxx.so到php.ini安装扩展

安装扩展

核心扩展

FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd

pecl扩展

FROM php:7.4-cli
RUN pecl install redis-5.1.1 \
    && pecl install xdebug-2.8.1 \
    && docker-php-ext-enable redis xdebug
FROM php:5.6-cli
RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev \
    && pecl install memcached-2.2.0 \
    && docker-php-ext-enable memcached

pecl扩展也可以通过下载后使用phpize手动安装

举个redis安装的例子

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

也可以这样安装(未实验): 参见参考3

RUN apk update \
    && apk add autoconf \
    && apk add gcc g++\
    && apk add make \
&& wget https://pecl.php.net/get/redis-5.0.1.tgz -O redis.tgz \
&& mkdir -p redis \
    && tar -xf redis.tgz -C redis --strip-components=1 \
    && rm redis.tgz \
    && ( \
        cd redis \
        && phpize \
        && ./configure --with-php-config=/usr/local/bin/php-config \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r redis \
    && docker-php-ext-enable redis

安装其他扩展

FROM php:5.6-cli
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
FROM php:5.6-cli
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

参考

官方docker地址和说明

Docker 中的 PHP 安装扩展插件

docker中安装php扩展