基于php:8.2-fpm-alpine3.17的镜像旧libde265版本问题咨询
问题解答
为什么重新构建后仍存在旧版本libde265?
核心原因有两个:
- PHP官方基础镜像未同步更新:Alpine官方仓库确实推送了修复版libde265,但PHP官方的
php:8.2-fpm-alpine3.17镜像可能还没基于最新的Alpine 3.17快照重新构建。这类官方镜像并非实时同步Alpine的包更新,而是有固定的构建周期。 - 构建过程未主动升级包:如果你的Dockerfile里没有执行包更新命令,构建时只会复用基础镜像里已预装的旧版本libde265,不会自动从Alpine仓库拉取修复版。
修复当前漏洞的可行方案
主动在Dockerfile中升级libde265:
在Dockerfile中添加以下命令,强制拉取并安装修复版本:RUN apk update && apk upgrade libde265或者指定具体版本号更稳妥:
RUN apk add --no-cache libde265=1.0.15-r0这样构建时会直接从Alpine仓库获取修复后的包,绕过基础镜像里的旧版本。
等待PHP官方更新基础镜像:
PHP官方会定期基于Alpine的最新快照重新发布php:8.2-fpm-alpine3.17镜像,等官方更新后,执行docker pull php:8.2-fpm-alpine3.17拉取最新镜像,再用docker build --no-cache重新构建即可。
关于Alpine 3.17安全支持到期后的问题
Alpine 3.17的安全支持到2024-11-22,但当前CVE-2023-49468的修复版本1.0.15-r0已经在支持期内发布。到期后,官方不会再对Alpine 3.17的包进行任何安全更新,包括不会再针对这个漏洞做后续调整。也就是说,到期后拉取基础镜像不仅不会自动修复这个漏洞(因为修复包已经存在,只是基础镜像可能没同步),反而之后的镜像不会再收到任何新的安全补丁,风险更高。
内容的提问来源于stack exchange,提问作者Roman Zagday
相关产品推荐
相关产品推荐

