You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建中添加Nginx官方Debian仓库时GPG公钥验证失败的解决方法咨询

Docker构建中添加Nginx官方Debian仓库时GPG公钥验证失败的解决方法咨询

嗨,我来帮你搞定这个问题!你遇到的是Docker构建时Nginx官方仓库GPG公钥缺失导致的签名验证失败,解决起来其实很直观——只需要在Dockerfile里添加获取并导入对应公钥的步骤就可以了。

下面给你两种可行的方案,选一种适配你的需求就行:

方案一:简单直接的apt-key导入法(适合Debian Bullseye版本)

这种方式操作简单,在Bullseye版本里完全可用:

FROM debian:bullseye

RUN set -eux; \
    apt update; \
    # 安装必要工具:ca-certificates保证HTTPS请求安全,curl用来下载公钥
    apt install -y --no-install-recommends ca-certificates curl; \
    # 获取Nginx官方签名公钥并导入系统
    curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -; \
    # 添加Nginx主线版本仓库
    echo "deb https://nginx.org/packages/mainline/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list; \
    # 更新APT索引
    apt update;

方案二:符合Debian新规范的keyring方式(更推荐长期使用)

如果想遵循Debian后续版本的规范,可以把公钥放到专用的keyring目录下,避免apt-key的兼容性警告:

FROM debian:bullseye

RUN set -eux; \
    apt update; \
    apt install -y --no-install-recommends ca-certificates curl; \
    # 创建keyrings目录(确保目录存在)
    mkdir -p /usr/share/keyrings; \
    # 下载Nginx公钥到指定keyring文件
    curl -fsSL https://nginx.org/keys/nginx_signing.key -o /usr/share/keyrings/nginx-archive-keyring.gpg; \
    # 添加带签名验证的仓库,指定使用刚才下载的公钥
    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/mainline/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list; \
    # 更新APT索引
    apt update;

补充说明:

  • 我把多个RUN指令合并成了一个,这是Dockerfile的最佳实践之一,可以减少镜像的层数,提升构建效率。
  • 如果你不想用curl,换成wget也可以,只需要把curl -fsSL ... | apt-key add -改成wget -O - https://nginx.org/keys/nginx_signing.key | apt-key add -就行。
  • 这个公钥对应的指纹就是你错误提示里的ABF5BD827BD9BF62,导入后APT就能正常验证Nginx仓库的签名了。

备注:内容来源于stack exchange,提问作者clay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:12:58