|NO.Z.00115|——————————|^^ 制作 ^^|——|KuberNetes&Docker操作.V13|——|docker.v03|制作PHP小镜像|

一、制作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                    //单阶段构建镜像:

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-03-30 11:43  yanqi_vip  阅读(59)  评论(0)    收藏  举报

导航