一、制作PHP小镜像
### --- PHP小镜像制作路程
~~~ 首先根据自己的开发版本,选用一个基础镜像,
~~~ 再根据自己的开发环境,选用自己需要的扩展包
二、单阶段构建—基于alpine:创建dockerfile配置文件
### --- 单阶段构建创建dockerfile
[root@k8s-master01 dockerfiles]# vim Dockerfile
FROM php:7.1.22-fpm-alpine # 单阶段生成dockerfile文件
RUN apk add --no-cache binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev libc-dev icu-dev gettext-dev openssl-dev bzip2-dev
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath
#RUN docker-php-ext-install gettext
RUN docker-php-ext-install mysqli
#RUN apk add --no-cache php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache freetds-dev
##RUN docker-php-ext-install pdo_dblib
#RUN docker-php-ext-install soap
#RUN docker-php-ext-install sockets
#RUN docker-php-ext-install sysvsem
#RUN docker-php-ext-install xmlrpc
#RUN apk add --no-cache freetds-dev
#RUN docker-php-ext-install pdo_dblib
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
#RUN docker-php-ext-install -j$(nproc) gd
#FROM php:7.1.22-fpm-alpine # 多阶段生成dockerfile文件
#COPY --from=0 /usr/local/lib/php/extensions/no-debug-non-zts-20160303 /usr/local/lib/php/extensions/no-debug-non-zts-20160303 #因为把编译安装完成之后的版本文件放在这个目录下/usr/local/lib/php/extensions/no-debug-non-zts-20160303,然后我们会把这个文件拷贝到现在这个镜像里面。
#RUN apk add --no-cache freetds-dev php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev libc-dev icu-dev gettext-dev openssl-dev bzip2-dev && cd /usr/local/lib/php/extensions/no-debug-non-zts-20160303 && docker-php-ext-enable *.so && rm -rf /var/cache/apk/* #再把依赖包依赖的环境安装上。这样就可以在基础镜像上来做了。
三、单阶段构建—基于alpine:构建镜像
### --- 单阶段构建镜像
[root@k8s-master01 dockerfiles]# docker build -t php:base .
Successfully built b6aa01005a89
Successfully tagged php:base
四、单阶段构建—基于alpine:查看镜像的大小
### --- 单阶段构建:查看镜像的大小
~~~ 可以看到镜像大小达到769MB
~~~ 就省去了编译产生的文件内容的步骤,减少了编译产生的文件内容。大概减少了700多兆的内容。
~~~ 虽然是使用alpine来做的,也清除了缓存,但是这个镜像包也会非常大。
[root@k8s-master01 dockerfiles]# docker images
php base b6aa01005a89 2 minutes ago 769MB
五、多阶段构建—基于alpine:创建dockerfile配置文件
### --- 多阶段编译的优越性
[root@k8s-master01 dockerfiles]# vim Dockerfile
FROM php:7.1.22-fpm-alpine
RUN apk add --no-cache binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev libc-dev icu-dev gettext-dev openssl-dev bzip2-dev
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath
#RUN docker-php-ext-install gettext
RUN docker-php-ext-install mysqli
#RUN apk add --no-cache php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache freetds-dev
##RUN docker-php-ext-install pdo_dblib
#RUN docker-php-ext-install soap
#RUN docker-php-ext-install sockets
#RUN docker-php-ext-install sysvsem
#RUN docker-php-ext-install xmlrpc
#RUN apk add --no-cache freetds-dev
#RUN docker-php-ext-install pdo_dblib
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
#RUN docker-php-ext-install -j$(nproc) gd
FROM php:7.1.22-fpm-alpine
COPY --from=0 /usr/local/lib/php/extensions/no-debug-non-zts-20160303 /usr/local/lib/php/extensions/no-debug-non-zts-20160303
RUN apk add --no-cache freetds-dev php7-sysvsem php7-pdo_dblib php7-sockets php-soap php7-xmlrpc binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev libc-dev icu-dev gettext-dev openssl-dev bzip2-dev && cd /usr/local/lib/php/extensions/no-debug-non-zts-20160303 && docker-php-ext-enable *.so && rm -rf /var/cache/apk/*
六、多阶段构建—基于alpine:创建镜像
### --- 多阶段构建镜像
[root@k8s-master01 dockerfiles]# docker build -t php:base .
Successfully built b6aa01005a89
Successfully tagged php:base
七、多阶段构建—基于alpine:查看镜像大小
### --- 查看制作的镜像大小
[root@k8s-master01 dockerfiles]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php base-v1 502e1a6c8cfd About a minute ago 175MB //多阶段构建镜像:只有175MB,少了好多空间大小
php base b6aa01005a89 8 minutes ago 769MB //单阶段构建镜像: