Nginx+PHP7.3.9 Docker镜像制作
- 2019 年 10 月 6 日
- 筆記
最近因项目需要制作了多个版本的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