我有一个像这样开始的
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client
这将按预期安装 PostgreSQL 客户端,但版本错误。
pg_dump: pg_dump: error: aborting because of server version mismatch
pg_dump: pg_dump: detail: server version: 16.1 (Debian 16.1-1.pgdg120+1); pg_dump version: 15.6 (Debian 15.6-0+deb12u1)
尝试指定版本
postgresql-client-16
直接导致
Unable to locate package postgresql-client-16
直接添加源会导致一些新的错误消息
RUN apt-get update && apt-get install -y wget gnupg2
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client-16
postgresql-client-16 : Depends: libpq5 (>= 16.2) but it is not going to be installed
Depends: libssl1.1 (>= 1.1.0) but it is not installable
尝试安装库也会导致错误。 我在这里做错了什么以及如何在 Docker 映像中安装
postgres-client
工具?
如果您使用 Alpine 3.19 基础镜像,那么您将获得一个可与主要版本 16 的服务器配合使用的 PostgreSQL 客户端版本。
FROM FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine as base
RUN apk add --no-cache postgresql-client
CMD pg_dump --version
as base
RUN apk add --no-cache postgresql-client
CMD pg_dump --version
生成的
pg_dump
版本是
pg_dump (PostgreSQL) 16.2