docker第六期 实战 使用Dockerfile 构建属于自己的php环境
大家可能会在开发中遇到这个问题,当我们从docker-hub上拉取一个php镜像下来时,发现很多拓展都没有,导致无法很好为我所用,这个时候我们就可以自定义 Dockerfile,创建一个属于我们自己的一个镜像。接下来就来讲讲它的构建过程。环境php 7.4composer 依赖管理工具需要的拓展swooleredismongodbxmlwriter安装拓展需要的命令docker-php-source格式:docker-php-source extract | delete参数说明:extract:创建并初始化/usr/src/php 目录delete: 删除 /usr/src/php 目录root@VM-8-11-ubuntu:/home/docker# docker run —name=myphp01 -it myphp:1.0 /bin/sh# cd /usr/src# lsphp.tar.xz php.tar.xz.asc# docker-php-source extract# lsphp php.tar.xz php.tar.xz.asc注意:php容器默认是不会生成这个文件目录的。需要执行这个命令生成docker-php-ext-install格式:docker-php-ext-install “源码包目录名”注意点:1. “源码包”需要放在 /usr/src/php/ext 目录下2. 默认情况下,PHP容器没有/usr/src/php 这个目录,需要使用 docker-php-source extract 来生成3. 卸载扩展,直接删除 /usr/local/etc/php/conf.d对应的配置文件即可。4. 可以直接使用pecl安装的就直接使用pecl安装docker-php-ext-enable用来启动扩展的。格式:docker-php-ext-enable 扩展名
docker-php-ext-configure
一般都是需要跟docker-php-ext-install搭配使用,它的作用是,当你安装扩展时,需要自定义配置时,就可以使用它来帮你做到。
构建 属于自己的PHP-Dockerfile 文件
FROM php:7.4MAINTAINER docker_user docker_user@email.comENV TZ=Asia/ShanghaiRUN apt-get update && apt-get install -y \—no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev curl \&& apt-get install zlib1g-devRUN pecl install mongodb \&& pecl install redis \&& pecl install swoole \&& pecl install xlswriter \&& docker-php-ext-enable mongodb redis swoole xlswriterRUN curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar \&& chmod +x /usr/bin/composerENV COMPOSER_HOME=/tmp/composer
查看执行
执行构建命令 docker build -t myphp:1.0 .docker run —name=myphp -it myphp:1.0 /bin/sh 进入容器php -m 查看php扩展composer -v 查看composer
我们可以看到这四个扩展和Composer已经安装上去了,所以之后我们还想装什么扩展,就可以按照这个方式装上去。构建自己专属的php环境啦。
