[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

尝试各种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。想成为那样的人。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
445
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。