系统操作和维护
开始前
为什么需要定制一个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。