如何在基于php:8.1-fpm(Debian12)的Dockerfile升级Nginx至1.24.0
解决Debian 12基础镜像中升级Nginx到1.24.0的问题
问题原因
- Debian 12(Bookworm)的官方软件源里,Nginx的稳定版本是1.22.1,所以直接指定
nginx=1.24.*会提示找不到对应包。 - PPA是Ubuntu专属的仓库机制,Debian系统无法兼容使用,因此添加PPA后依然只能安装系统源里的旧版本。
可行解决方案:使用Nginx官方Debian仓库
以下是修改后的完整Dockerfile,通过添加Nginx官方提供的Debian仓库来安装指定版本:
FROM php:8.1-fpm # 安装添加官方仓库所需的依赖工具 RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ gnupg2 \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # 导入Nginx官方GPG密钥,确保包的合法性 RUN curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg # 添加Nginx稳定版仓库(适配Debian 12 Bookworm) RUN echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/stable/debian/ bookworm nginx" > /etc/apt/sources.list.d/nginx.list # 设置仓库优先级,确保优先选用Nginx官方源的包 RUN echo "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" > /etc/apt/preferences.d/99nginx # 更新源并安装1.24.x版本的Nginx RUN apt-get update && apt-get install -y --no-install-recommends \ nginx=1.24.* \ && rm -rf /var/lib/apt/lists/* # 可选:验证Nginx版本 # RUN nginx -v
关键步骤说明
- 安装依赖工具:
curl用于下载密钥,gnupg2用于验证密钥合法性,ca-certificates保障HTTPS请求安全。 - 导入GPG密钥:避免安装未授权的恶意包。
- 添加官方仓库:明确指定Debian 12的代号
bookworm,对应Nginx官方的稳定版仓库路径。 - 设置仓库优先级:防止系统默认源的旧版本Nginx覆盖官方源的新版本。
- 安装指定版本:通过
nginx=1.24.*匹配1.24系列的最新稳定版。
内容的提问来源于stack exchange,提问作者Saili
相关产品推荐
相关产品推荐

