Docker Alpine镜像中如何将libpq-dev升级至10及以上版本解决SCRAM认证错误
Debian9 Docker容器升级libpq到10+版本解决方案
你当前使用的容器系统为Debian 9(Stretch),其官方默认软件源中libpq的最高版本为9.6,因此直接执行apt安装命令无法获取10及以上版本,才会触发SCRAM authentication requires libpq version 10 or above报错。
运行中容器临时修复方案
- 第一步:安装证书和下载工具,导入PostgreSQL官方GPG密钥
apt install wget ca-certificates -y wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - - 第二步:添加PostgreSQL官方源到系统源列表
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' - 第三步:更新源后安装高版本libpq
apt update && apt install libpq-dev -y - 验证安装结果:执行以下命令确认版本,返回结果中libpq版本大于等于10即为安装成功
dpkg -l | grep libpq
安装完成后重启容器内的应用服务即可解决SCRAM认证报错。
永久修复方案(写入Dockerfile避免重复操作)
直接把升级逻辑集成到镜像构建流程中,无需每次启动容器后手动修改,示例Dockerfile如下:
# 替换为你实际使用的基础镜像,比如基于Debian9的php、python、node镜像等 FROM python:3.7-stretch RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ ca-certificates \ # 导入PG官方密钥 && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ # 添加PG官方源 && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ # 安装高版本libpq && apt-get update && apt-get install -y --no-install-recommends libpq-dev \ # 清理缓存减小镜像体积 && apt-get autoremove -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
可选优化方案
如果业务允许升级基础系统版本,可直接将容器基础镜像替换为Debian 10(Buster)及以上版本,其默认源中自带的libpq版本已高于10,无需额外添加源操作。
内容的提问来源于stack exchange,提问作者pmiranda
相关产品推荐
相关产品推荐

