CC00115.CloudKubernetes——|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                    //单阶段构建镜像:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值