gpt4 book ai didi

php - Docker Image Build(摆脱依赖)

转载 作者:行者123 更新时间:2023-12-02 18:38:59 24 4
gpt4 key购买 nike

我正在从 php:7.2-fpm-alpine 的基础镜像构建一个 php docker 镜像,需要一些自定义的 php 扩展。

就像以下用于安装依赖项和一些额外扩展的命令一样。

RUN apk upgrade --update && apk add libpng-dev libjpeg-turbo-dev \
freetype-dev libbz2 libxml2-dev libxml2 bzip2-dev libxslt libxslt-dev \
&& docker-php-ext-install bcmath calendar gd hash zip pdo_mysql

由于我需要为我的扩展手动安装依赖项,因此将其编译为类似于 bcmath.so gd.so 的内容.

我正在考虑是否可以摆脱这些依赖关系并复制 *.so进入新图像,因为我正在使用 Dockerfile 中的多阶段构建。

问题是我可以摆脱 GCC+ 编译器和其他一些依赖项(openssl、curl)吗?只是将编译结果添加到新图像中?

最佳答案

一旦你编译了扩展,你至少应该能够摆脱 -dev 包。 -dev 包包括诸如 c 源头文件 (.h) 之类的东西。

因此,在您的示例中,您安装了 libxml2-dev 和 libxml2。在这种情况下,libxml2 包是运行代码所需的文件,libxml2-dev 是编译任何使用 libxml2 的代码所需的包。当您为 PHP 编译扩展时,该扩展并不包含运行特定功能的所有二进制文件,它通常依赖于安装在操作系统上的包。

你可以摆脱 gcc 和一些支持的东西,但你可能需要经历一个删除包的过程,然后测试是否有任何问题。

也可以删除 PHP 中的一些模块,这又取决于您的代码及其作用。虽然这超出了我所做的,我不确定这样做的好处。

关于php - Docker Image Build(摆脱依赖),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com