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
相关产品推荐
相关产品推荐

