在Docker项目中添加MongoDB时遇GPG密钥及安装错误求助
问题原因分析与解决方案
逐个错误的根因
初始GPG密钥链接无效
你用的密钥链接末尾多了斜杠(https://www.mongodb.org/static/pgp/server-6.0.asc/),正确地址应为https://www.mongodb.org/static/pgp/server-6.0.asc。另外直接通过apt-add-repository添加密钥链接的方式本身错误,需先单独导入密钥再添加源。wget参数不兼容
wget -qO的写法缺少输出目标,正确用法是wget -qO - <URL>(-表示将内容输出到标准输出),你大概率漏了后面的-和后续管道导入命令,导致参数解析失败。无法定位mongodb-org包
要么是源未正确添加到apt源列表,要么是密钥导入失败导致apt不信任该源,还有可能是基础镜像Ubuntu版本(如jammy)与源中指定版本(focal)不匹配,导致找不到对应包。GPG签名验证失败
密钥未正确导入apt可信密钥环。Ubuntu 20.04+推荐将密钥以二进制格式存储到/usr/share/keyrings/目录,而非已废弃的apt-key add命令,旧方式会导致密钥无法被apt识别验证。
正确的Docker配置示例
以下是适配Ubuntu 20.04(focal)的Dockerfile配置,可解决所有上述问题:
FROM ubuntu:focal # 安装必要工具 RUN apt-get update && apt-get install -y --no-install-recommends wget gnupg # 导入MongoDB GPG密钥(新Ubuntu版本标准方式) RUN wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg # 添加MongoDB官方源并关联密钥文件 RUN echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list # 安装MongoDB RUN apt-get update && apt-get install -y --no-install-recommends mongodb-org # 创建MongoDB数据目录并设置权限 RUN mkdir -p /data/db && chown mongodb:mongodb /data/db # 启动MongoDB服务 CMD ["mongod"]
关键注意事项
- 若基础镜像是Ubuntu 22.04(jammy),需将源中的
focal替换为jammy --no-install-recommends可减少镜像体积,非必需但推荐使用- 需确保密钥文件路径与源配置里的
signed-by参数完全一致,否则apt仍会验证失败
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

