尝试各种PHP执行环境! 2016年将由Docker协调决定!
你好。
我是Mandai,负责Wild 开发团队。
如果你想用 docker 创建一个奇特的开发环境,为什么不尝试用 docker build 创建一个原始的 docker 镜像呢?
如果你有一个易于混搭的docker镜像,你的安排就会多种多样!
这是作为 docker 入门系列的一部分编写的。
如果您想阅读过去的 Docker 介绍系列,请点击下面的链接。
请注意,这不是一个可以通过复制粘贴完成的系列,因为这不能通过复制粘贴来完成。不错。
关于PHP执行环境
docker hub上列出的docker镜像都相当优秀,直接使用是没有问题的。
- 例如,您可能想要更具体地了解放置源文件的目录。
- 我想使用 PHP 中的 ffmpeg 对音频文件进行编码。
- 您想要使用带有大量扩展模块的 PHP。
我认为满足这样的需求的唯一方法就是自己重建docker镜像。
在许多情况下,这可以通过更改现有的 docker 映像并重新构建来完成,但
也可以在编译 PHP 时包含该模块。
Dockerfile 是构建 docker 的分步指南,如果你看一下它,你一眼就能明白正在做什么。
换句话说,你当前使用的 docker 镜像在某处有一个 Dockerfile,
如果你对该 Dockerfile 进行一些修改并构建它,你就可以获得你想要的最佳 docker 镜像。
而且,有很多Dockerfile已经上传到github上,并且是公开的(官方的Docker镜像越多,可能性就越大),所以大家可以看各种Dockerfile,偷一下方法。
这次,我想使用官方 PHP docker 镜像作为参考,创建一个包含多字节兼容 PHP 的 docker 镜像。
首先,找到基础docker镜像
如果您查看 docker hub 上列出的 docker 镜像,您可以轻松找到与您要创建的镜像类似的 docker 镜像。
这次我想在
官方的PHP docker镜像如果您查看该页面,会发现一个指向 github 上维护的 Dockerfile 的链接。
当我点击链接(7.0/apache/Dockerfile)时,我看到了一个用于创建 PHP7.0 系列 + apache docker 镜像的 Dockerfile。
我将以此为起点。
让我们在虚拟机上 git 克隆这个存储库并进行一些修改。
cd ~ vagrant@vagrant:~$ git clone https://github.com/docker-library/php.git vagrant@vagrant:~$ cd /home/vagrant/php/7.0/apache
将“--enable-mbstring”添加到./configure的选项中。
另外,创建一个用于测试的 PHP 文件并将其复制到 docker 镜像。
vi Dockerfile # Dockerfile around line 59 && ./configure --enable-mbstring # ← Add --with-config-file-path="$PHP_INI_DIR" # 将以下 COPY 命令添加到 Dockerfile 中的适当位置 # I , 添加在 WORKDIR /var/www/html 之前。复制 mbstring.php /var/www/html/
尝试使用 docker build 编译 PHP
修复后,创建 mbstring.php。
echo "<?php echo mb_convert_kana('1234567890', 'N');> mbstring.php
创建后,尝试 docker build。
vagrant@vagrant:~/php/7.0/apache$ docker build -t myphp7 。
之前的不同
此构建构建完成后,让我们从 docker 镜像创建一个 docker 容器。
vagrant@vagrant:~/php/7.0/apache$ docker run -it myphp7 /bin/bash root@66c8bbc720a9:/var/www/html# ls mbstring.php root@66c8bbc720a9:/var/www/html# 服务 apache2 启动[...] 启动 Web 服务器:apache2AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.3 全局设置“ServerName”指令以抑制此消息 ok root@66c8bbc720a9:/var/。 www/html#curl http://localhost/mbstring.php 1234567890root@66c8bbc720a9:/var/www/html#
看起来像是执行了一条将半角数字转换为全角数字的指令然后退出,但是转换成功,没有任何问题。
你不必从头开始自己做,我认为你可以找到一个相对简单的 Dockerfile 并使用它作为起点来快速进入构建阶段。
官方的 PHP docker 镜像不包含 vim,所以如果你想修改里面的配置,你应该使用 apt-get 安装 vim。
在使用vagrant创建虚拟环境时,我总是关心文件大小,但是
在创建docker镜像时,它是1/4大小,所以我想分享一下(当然,只有PHP执行环境)也容易。
首先,如果您只共享 Dockerfile 和要包含在 docker 镜像中的文件,那么使用 git 存储库来管理它很容易。
能够将整个编译过程转化为命令,在开发之初构建环境时有很多好处,因此您
可以通过添加最佳编译选项来准备最佳执行环境,而无需过多依赖 apt-get 或 yum I。想成为那样的人。
就是这样。