前言制作基于官方alpine3.9版本,加入自定义插件。1.编辑原则使用官方Dockerfile去掉认证验证,合并RUN代码减少不必要的层数,替换启动脚本。2、分步制作由于之前使用官网总是遇到各种错误,为了提高完成效率,我分步制作了镜像。A。带有各种中间软件和开发代码的纯php:#php7.3.5;Feb7,2019链接:https://github.com/docker-library/php/blob/master/7.3/alpine3.9/fpm/Dockerfile#Baseimages基础镜像+阿里源FROMalpine:3.9#MAINTAINER维护者信息MAINTAINERcffycls@foxmail.com#运行“phpize”所需的依赖项ENVPHP_VERSION7.3.6ENVPHP_URLhttps://secure.php.net/get/php-$PHP_VERSION.tar.xz/from/this/mirrorENVPHPIZE_DEPS\autoconf\dpkg-devdpkg\file\g++\gcc\libc-dev\make\pkgconf\re2cENVPHPIZE_DEVS\argon2-dev\coreutils\curl-dev\sed-i's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'/etc/apk/repositories\&&apk更新\&&放大器;addgroup-g82-Swww-data\&&adduser-u82-D-S-Gwww-datawww-data\&&mkdir-p"/usr/local/etc/php/conf.d"&&mkdir-p"/var/www/html"\&&chownwww-data:www-data/var/www/html&&chmod777/var/www/html\&&apkadd--no-cache\curl\tar\xz\openssl\wgetCOPYphp.tar.xzphp.tar.xzRUNset-eux;\apk添加$PHPIZE_DEPS$PHPIZE_DEVS\#&&wget-Ophp.tar.xz"$PHP_URL"\&&tar-Jxfphp.tar.xz&&cdphp-$PHP_VERSION&&./configure\--prefix="/usr/local/php"\--with-config-file-path="/usr/local/php/etc"\--with-config-file-scan-dir="/usr/local/php/etc/conf.d"\\--enable-option-checking=fatal\--with-mhash\\--enable-ftp\--enable-exif\--enable-mbregex\--enable-mbstring\--enable-mysqlnd\--enable-sysvmsg\--enable-opcache\--enable-pcntl\--enable-sockets\--enable-sysvsem\--enable-xml\--with-curl\--with-libedit\--with-openssl\--with-zlib\--with-pcre-regex\--with-pear\--with-libxml-dir=/usr\--with-jpeg-dir\--with-freetype-dir\--with-xpm-dir\--with-png-dir\--with-gettext\--with-mhash\--with-iconv\--disable-fileinfo\\--enable-fpm--with-fpm-user=www-data--with-fpm-group=www-data--disable-cgi\&&make-j"$(nproc)"\&&find-typef-name'*.a'-delete\&&makeinstall\#&&makeclean\&&rm-rf/tmp/pear~/.pearrc\&&cd../&&rm-rfphp-$PHP_VERSION.tar.xzphp-$PHP_VERSIONb.测试准备建立上面的镜像,运动所得容器,准备添加扩展容器启动时需要的配置文件/usr/local/php/etc/文件夹需要准备一个配置共享。这里把上面官方的配置稍作修改分享给后续安装:[]:~/tmp/dk#tree-aphpphp├──config│├──pear.conf│├──php-fpm.conf│├──php-fpm.conf.default│├──php-fpm.d││├──www.conf││└──www.conf.default│├──php.ini│└──start.sh├──Dockerfile└──php.tar.xz以上配置修改为普通配置。C。添加扩展,问题分解首先考虑官方的pecl安装插件,这里的目标:swoole-inotify-redis-uuid-memcached#需要自己下载类库的插件或者交互安装,使用方法下载源代码并单独编译。下面是运行测试shell设置并将代码转换为Dockerfile的结果。其中,我在安装memcached(相当于新增强版的memcache)时遇到了问题。官方的memcached安装很快,但是php扩展安装困难:出现多次编译错误,php的memcached报错libmemcached丢失,后面一直失败。参考《错误解决》,参考来自:https://bugs.launchpad.net/li...BugDescriptionWhenbuildingwithlatestGCCversion7------------clients/memflush.cc:42:22:错误:ISOC++禁止比较指针和整数[-fpermissive]if(opt_servers==false)^~~~~clients/memflush.cc:51:24:错误:ISOC++禁止比较指针和整数integer[-fpermissive]if(opt_servers==false)^~~~~简单修复:http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch#Patch,为好久没有效果http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patchpatch-p0
