Nginx+PHP7.3.9 Docker镜像制作

最近因项目需要制作了多个版本的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

猜你喜欢

转载自www.cnblogs.com/lipingshare/p/11627009.html