使用Docker构建自定义PHP可执行文件

43次阅读
没有评论

问题描述

想要使用Docker来编译一个自定义的PHP可执行文件。他计划使用alpine作为基础镜像,并安装所需的工具(build-essentials等)。他的目标是为以后在子镜像中使用的最简化结果镜像。
他想知道是否有意义将生成的php二进制文件打包并发布到主机上,然后让子镜像只需拉取php二进制文件即可?
或者保留原始镜像是否有意义?构建工具和库文件会发生什么?它们会成为镜像的一部分吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用多阶段构建可以更好地处理基础Docker镜像的生命周期。以下是一种实现方法:
1. 创建一个git仓库,用于保存Dockerfile和配置文件。
2. 在Dockerfile中使用alpine作为基础镜像,并添加所需的配置和库文件。
3. 添加php.ini和php-cli.ini配置文件。
4. 创建一个Jenkins任务,当git仓库有新的推送时触发:
– 构建Docker镜像。
– 递增标记版本号。
– 推送到你的镜像仓库。
5. 使用这个基础镜像来创建你的最终Docker镜像。

这种方法的好处是,你可以将构建工具和库文件等不必要的内容从最终镜像中剥离出来,使得镜像更加轻量化。你可以将这些内容放在基础镜像中,并在构建最终镜像时使用多阶段构建来只保留必要的内容。

方案2

另一种方法是保留原始镜像,并将构建工具和库文件等内容作为镜像的一部分。这样做的好处是,你可以在需要时直接使用原始镜像,而无需再次构建。

然而,这种方法可能会导致最终镜像的大小增加,因为构建工具和库文件等内容会成为镜像的一部分。如果你关注镜像的大小,那么使用多阶段构建可能是更好的选择。

无论你选择哪种方法,都可以根据具体需求进行调整和优化。

正文完