Nginx+PHP7.3.9 Docker镜像制作

  • 2019 年 10 月 6 日
  • 筆記

最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中的安装改成了源码编译安装的方式。

主要有一下几个步骤:

  1. 编译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  

 

  1. 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
    这个版本
     
  2. 链接库路径设置
    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

     

  3. 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

     

  4. 源码编译开关配置及编译命令
    #环境变量
    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

     

  5. 开启服务,service start nginx && /usr/local/${folder}/sbin/php-fpm

完整可直接build的dockerfile 请参考

http://3xcn.com/forum.php?mod=viewthread&tid=60&extra=page%3D1