最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中的安装改成了源码编译安装的方式。
主要有一下几个步骤:
- 编译php所需yum包安装,注意epel-release
和libmcryt-devel 需要分成2条yum命令按照epel-release在前的命令安装,不然会报找不到安装包错误
yum -y install patch openssl openssl-devel pcre pcre-devel gd gd-devel \ gcc gcc-c++ make automake autoconf install libxml2 libxml2-devel \ curl-devel \ libjpeg-devel \ unzip \ mysql-server mysql-devel && \ yum -y install epel-release && \ yum -y install libmcrypt-devel && \ yum -y install libmhash-devel && \ yum -y install postgresql-devel && \ yum -y install bzip2-devel && \ yum -y install bzip2
- php源码包下载
php源码包有两个地方提供,http://www.php.net/releases , https://github.com/php/php-src/建议从http://www.php.net/releases 选择需要的版本,github上的源码没有configure文件,无法直接进行编译;这里选择了 https://www.php.net/distributions/php-7.3.9.tar.gz这个版本 - 链接库路径设置
ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so && \ ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so && \ ln -s /usr/lib64/libpng.so /usr/lib/libpng.so && \ ln -s /usr/lib64/mysql /usr/lib/mysql
- cmake安装及设置 编译 php7.3.9 因插件libzip需要 使用cmake3编译,否则版本不支持,此处libzip原始的编译脚本,libzip源码包路径 https://libzip.org/download/libzip-1.5.2.tar.gz
yum install -y cmake3 && \ ln -s /usr/bin/cmake3 /usr/bin/cmake && \ tar -zxvf libzip-1.5.1.tar.gz && \ cd libzip-1.5.1 && \ mkdir build && \ cd build && \ cmake .. && \ make && make install
- 源码编译开关配置及编译命令
#环境变量
export ver=php-7.3.9 && \
export folder=php739 && \
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \ ./configure --prefix=/usr/local/${folder} --enable-zip --enable-fpm \ --with-fpm-user=apache \ --with-fpm-group=apache \ --with-iconv \ --with-mhash \ --enable-zip \ --with-bz2 \ --enable-gd-native-ttf --with-config-file-path=/usr/local/${folder}/etc --with-config-file-scan-dir=/usr/local/${folder}/etc/php.d \ --with-curl --with-libxml-dir=/usr/lib64 --with-gd --with-jpeg-dir --with-freetype-dir=/usr/lib64 --with-png-dir --with-mcrypt \ --with-mhash --enable-mbstring --with-kerberos --with-gettext --enable-bcmath --with-mysql --with-mysqli --with-sqlite \ --enable-pdo --with-pdo-mysql --with-openssl --enable-ftp --with-pear --with-zlib --enable-inline-optimization \ --with-pdo-pgsql --with-pgsql \ --enable-calendar --enable-magic-quotes --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --disable-debug && \ make && make instal - 开启服务,service start nginx && /usr/local/${folder}/sbin/php-fpm
完整可直接build的dockerfile 请参考
http://3xcn.com/forum.php?mod=viewthread&tid=60&extra=page%3D1