陈奇网络工作室

为什么我需要自定义基础映像?

系统操作和维护

开始前

为什么需要定制一个PHP基础镜像?

对于使用php (python)开发的项目,由于是解释型语言,所以不需要编译代码(go或java将依赖项打包成可执行程序或包),但往往需要安装一些依赖库或第三方模块。

在项目实践中,php官方镜像会加入一些必要的扩展模块,比如连接mysql数据库的mysql ND模块,或者Redis、memcache、MongoDB等常见的PHP扩展模块,具体以项目实际需求为准。

基础形象的作用是为项目形象提供支撑。准备好php基本映像后,基于该映像构建项目映像,并添加项目代码。除了重大安全更新和增加新的扩展模块,基本镜像不会频繁更新调整。

举个栗子

这里用一个例子来描述php的基本形象。环境和要求如下:

该项目是基于' php5 MYSQL '的发展。

该项目使用“php-fpm”来运行项目代码。

该项目使用' nginx '来反向代理php-fpm,并提供\ \ \ '静态资源\ \ '服务。

项目需要mysqlnd、redis、memcache等php扩展模块。

docker默认只运行一个进程(docker提倡的概念),但是项目需要两个服务(php-fpm,nginx),所以需要第三方的进程管理软件。docker中流行的解决方案是使用管理软件来管理多个进程。

本文关注如何实现一个php基本映像,并将在下一篇文章中介绍如何使用supervisor管理多个进程。

操作程序

基于上述需求,设计了Dockerfile文件。

cat base/php/5.6/Dockerfile

#使用php:5.6-fpm官方图片

来自php:5.6-fpm

维护人员董楠#@微信微信官方账号:运维记录

#环境

ENV TZ=亚洲/上海\\\

朗=美国。UTF-8

# apt

复制conf/sources . list/etc/apt/sources . list

运行apt-get更新apt-get install -y \\\\

主管nginx \\\\

libfreetype6-dev \\\\

libjpeg62-turbo-dev \\\\

libmcrypt-dev \\\\

libpng-dev \\\\

libmagickwand-dev \\\\

libmemcached-dev \\\\

bzip2 \\\\

apt-get clean RM-r/var/lib/apt/lists/*

#分机

运行docker-PHP-ext-install BC math \ \ \ \

dba \\\\

exif \\\\

mysqli \\\\

pdo_mysql \\\\

sysvsem \\\\

sysvshm \\\\

bz2 \\\\

zip \\\\

关系型数据库

#物品

运行docker-PHP-ext-install-j $(nproc)iconv mcrypt \ \ \ \

docker-php-ext-configure gd \\\

-with-freetype-dir=/usr/include/\ \ \

-with-JPEG-dir=/usr/include/\ \ \

docker-PHP-ext-install-j $(nproc)GD

# pecl

运行pecl install imagick \\\\

memcached-2.2.0 \\\

redis-4.3.0 \\\

docker-PHP-ext-enable imagick \ \ \ \

docker-PHP-ext-启用memcached \\\\

docker-php-ext-enable redis

建立镜像

cd base/php/5.6/

docker build -t演示版:0.0.1。

将构建上下文发送到Docker守护程序3.0 kb

#省略符号.

成功构建cd34135ed904

如果你不明白Dockerfile文件参数的含义或者如何使用build命令,请参考这篇文章《如何使用 Dockerfile自定义镜像?》。

验证图像

docker图像-格式\\\'{{。存储库}} {{。Size}}\\\ '

演示基础723MB

您可以使用这个php基本映像创建一个容器,但是尽管这个容器(映像)已经安装了nginx,但它不会运行。目前只有默认的php-fpm在运行,下一篇文章会解决这个问题:《使用supervisor管理docker容器中多个进程》。敬请期待每周四微信官方账号docker专题更新文章。

总结

最后,总结文章中的知识点。

基础映像的作用是为项目映像提供支持,在基础映像上添加项目代码,完成项目映像的构建。

除了重大安全更新和添加新的扩展模块,基本镜像不会频繁更新。

默认情况下,docker只运行一个进程,需要supervisor进程管理软件来管理多个进程。

参考文章

多克k8s群[703906133]

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3