标签:apt-get uil images magic 微信公众号 还需要 source fpm iconv
为什么需要自定义一个PHP
基础镜像?
对于使用php
(python
)等开发的项目,由于是解释型语言并不需要编译代码
这个步骤(go
或者java
将依赖打包到可执行程序或包中),但是往往还需要安装一些依赖的库或者第三方模块。
在项目实践中一般会先在PHP
官方镜像之上,添加项目一些必用扩展模块,例如连接 mysql
数据库的 mysqlnd
模块,或者连接 redis
、memcache
、mongodb
等常用的php
扩展模块,以项目实际需求为准。
基础镜像作用是为项目镜像提供支持,准备好php
基础镜像之后,以此镜像为基础并添加项目代码,完成项目镜像
构建工作,除重大安全更新、添加新的扩展模块之外,基础镜像并不会经常更新和调整。
这里使用一个示例来描述php
基础镜像,环境及需求如下:
项目基于 `php5 + mysql` 开发。
项目使用 `php-fpm` 运行项目代码。
项目使用 `nginx` 反向代理 php-fpm 并提供‘静态资源‘服务。
项目需要 `mysqlnd、redis、memcache` 等php扩展模块。
默认情况下 docker 只运行一个进程(docker推崇的理念),但是项目需要两个服务(php-fpm、nginx
),所以需要第三方的进程管理软件,在docker中较流行的方案是使用 supervisor
软件管理多个进程。
这篇文章重点介绍如何实现一个php
基础镜像,将在下一篇文章中介绍 如何使用 supervisor
管理多个进程。
Dockerfile
文件。cat base/php/5.6/Dockerfile
# 使用 php:5.6-fpm 官方镜像
FROM php:5.6-fpm
MAINTAINER dongnan #<@微信公众号:运维录>
# env
ENV TZ="Asia/Shanghai" LANG="en_US.UTF-8"
# apt
COPY conf/sources.list /etc/apt/sources.list
RUN apt-get update && apt-get install -y supervisor nginx libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev libmagickwand-dev libmemcached-dev bzip2 && apt-get clean && rm -r /var/lib/apt/lists/*
# ext
RUN docker-php-ext-install bcmath dba exif mysqli pdo_mysql sysvsem sysvshm bz2 zip mysql
# gd
RUN 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
RUN pecl install imagick memcached-2.2.0 redis-4.3.0 && docker-php-ext-enable imagick && docker-php-ext-enable memcached \
&& docker-php-ext-enable redis
cd base/php/5.6/
docker build -t demo-base:0.0.1 .
Sending build context to Docker daemon 3.0 kb
# 省略....
Successfully built cd34135ed904
不明白Dockerfile
文件参数含义,或者 build
命令使用方法,请参考这篇文章《如何使用 Dockerfile自定义镜像? 》
docker images --format ‘{{.Repository}} {{.Size}}‘
demo-base 723MB
可以使用这个php
基础镜像创建一个容器,不过这个容器(镜像)虽然已经安装了nginx
但是并不会运行,目前只有默认的php-fpm
在运行,将在下一篇: 《使用supervisor管理Docker容器中多个进程》解决这个问题,敬请期待 公众号每周四 docker专题更新文章。
最后来总结下文章中的知识点
项目镜像
提供支持,并在基础镜像之上添加项目代码,完成项目镜像构建工作。supervisor
进程管理软件管理多个进程。doker&k8s Qun [703906133]
标签:apt-get uil images magic 微信公众号 还需要 source fpm iconv
原文地址:https://blog.51cto.com/14521173/2459599