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

升级node:18-slim Docker容器遇GPG密钥与gnupg安装循环问题求助

解决node:18-slim镜像构建时apt密钥循环问题

问题分析

升级到node:18-slim(基于Debian Bookworm)后,出现apt-get update需要签名密钥,但安装gnupg(用于导入密钥)又需要先执行apt-get update的死循环,核心原因是基础镜像缺失Debian官方源的签名密钥。

解决方案

方案1:临时绕过认证安装gnupg(快速解决)

通过--allow-unauthenticated参数临时跳过源认证,先安装gnupg,再导入所需密钥,之后即可正常执行apt操作:

FROM node:18-slim

# 临时允许未认证安装gnupg,打破循环
RUN apt-get update --allow-unauthenticated && \
    apt-get install -y --allow-unauthenticated gnupg2

# 一次性导入所有所需密钥
RUN gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys \
    0E98404D386FA1D9 \
    6ED0E7B82643E131 \
    F8D2585B8783D481 \
    54404762BBB6E853 \
    BDE6D2B9216EC7A8

# 正常执行后续apt操作,记得清理缓存减小镜像体积
RUN apt-get update && \
    # 这里添加你需要安装的其他依赖包
    # apt-get install -y your-package
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

方案2:规范导入密钥(推荐,适配apt-key废弃趋势)

apt-key已被官方标记为废弃,推荐将密钥直接导入到/etc/apt/trusted.gpg.d目录下,避免后续兼容性问题:

FROM node:18-slim

# 创建trusted.gpg.d目录,导入密钥并导出到指定文件
RUN mkdir -p /etc/apt/trusted.gpg.d && \
    gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys \
    0E98404D386FA1D9 \
    6ED0E7B82643E131 \
    F8D2585B8783D481 \
    54404762BBB6E853 \
    BDE6D2B9216EC7A8 && \
    gpg --export \
    0E98404D386FA1D9 \
    6ED0E7B82643E131 \
    F8D2585B8783D481 \
    54404762BBB6E853 \
    BDE6D2B9216EC7A8 > /etc/apt/trusted.gpg.d/debian-bookworm.gpg

# 正常更新并安装依赖
RUN apt-get update && \
    apt-get install -y gnupg2 && \
    # 添加其他需要的包
    # apt-get install -y your-package
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

关键说明

  • node:18-slim基于Debian Bookworm,部分环境下基础镜像可能未预装Debian源的签名密钥,导致apt验证失败。
  • --allow-unauthenticated仅作为临时绕过手段,安装完gnupg并导入密钥后,后续apt操作无需再使用该参数。
  • 优先选择方案2,遵循apt官方推荐的密钥管理方式,避免apt-key废弃带来的潜在问题。

内容的提问来源于stack exchange,提问作者user176504

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:35:17