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

执行docker-compose up时Dockerfile的PostgreSQL apt源签名验证失败如何解决

问题原因
  • 构建环境网络异常导致apt-key无法正常拉取PostgreSQL官方公钥,公钥未导入成功因此源签名验证失败
  • 从报错日志可知你的基础镜像为Ubuntu 20.04(focal版本),但配置的是适配Ubuntu 18.04的bionic版本PG源,版本不匹配也可能引发兼容问题
  • apt-key在新版Ubuntu系统中已被官方废弃,本身存在兼容性问题,容易出现拉取公钥失败的情况
解决方案

将原RUN指令替换为以下内容,改用官方推荐的公钥配置方式,同时修正源版本匹配问题:

RUN apt-get update \
    && apt-get install -y ca-certificates gnupg curl \
    && curl -fsSL https://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg \
    && echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt focal-pgdg main" >> /etc/apt/sources.list.d/pgdg.list \
    && apt-get update \
    && apt-get -y install libpq-dev=13.* \
    && apt-get -y install python3.8-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

修改说明

  1. 先安装ca-certificates、gnupg、curl依赖,确保可以正常拉取公钥、处理HTTPS请求
  2. 放弃废弃的apt-key工具,直接用curl拉取公钥后通过gpg处理存入官方推荐的密钥目录,稳定性更高
  3. 将PG源版本修正为和基础镜像匹配的focal-pgdg,如果确实需要使用bionic版本的源,把这段里的focal-pgdg改回bionic-pgdg即可
  4. 将源配置单独写入/etc/apt/sources.list.d/pgdg.list,避免污染系统主源配置文件
  5. 可选添加清理缓存的步骤,减小最终镜像体积

异常排查

如果修改后还是报错,可按以下步骤排查:

  • 检查构建机器的网络是否能正常访问apt.postgresql.org,存在网络限制的话可以提前把公钥下载到构建上下文,用COPY指令复制到镜像内再导入,不需要在线拉取
  • 可在导入公钥的步骤前添加gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7FCC7D46ACCC4CF8,从公钥服务器直接拉取对应PG公钥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:00