最近做了个php-fpm-alpine的dockerfile文件,基于php7.4.6和alpine3.11;初始文件还是从官方拿的,但是我们日常使用php会用到很多初始镜像内不存在的扩展,所以就总结了一下在docker内为php安装扩展的三种方式,供大家参考,当然也可以直接看我的dockerfile文件:/myeye520/dockerfile/tree/master/php/php-fpm7.4.6-alpine3.11。
一:docker已经打包好的扩展(例如gd,bcmath等)
主要包括gd,bcmath等,如果想要看docker已经打包了哪些扩展,可以使用:
docker-php-source extract //拉取所有的docker已打包的扩展到/usr/src
cd /usr/src/php/ext
ls
既可以看到。 这些扩展是可以使用docker自带的命令安装的,在dockerfile直接写:
RUN apk update && apk add --no-cache \
freetype-dev libjpeg-turbo-dev libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd \
docker-php-ext-install bcmath
安装成功,使用 php -m 可以看到已经安装了gd扩展和bcmath扩展;
二:php的pecl库里存在的扩展(例如redis,memcached,swoole等)
这些扩展需要先使用pecl安装,然后再使用docker命令开启扩展即可
RUN apk update && apk add --no-cache \
autoconf g++ make libmemcached-dev \
&& pecl install redis-5.2.2 \
&& docker-php-ext-enable redis \
&& pecl install memcached \
&& docker-php-ext-enable memcached \
&& pecl install swoole \
&& docker-php-ext-enable swoole
安装成功,使用 php -m 可以看到已经安装了redis、memcached、swoole扩展;
三:需要自己编译生成的php扩展(例如zmq)
# 安装zmq扩展
RUN cd /usr/src \
&& apk add --no-cache --virtual .git_deps git \
&& git clone git:///mkoppanen/ \
&& apk del .git_deps \
&& apk add --no-cache zeromq-dev \
&& cd php-zmq \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& docker-php-ext-enable zmq
安装成功,使用 php -m 可以看到已经安装了zmq扩展;
以上就是这次总结的三种php扩展安装方式,希望对大家有用处,欢迎指正