У меня есть 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
Попытка установить библиотеки также приводит к ошибкам.
Что я здесь делаю не так и как мне установить инструменты postgres-client
в образ Docker?
Если вы используете базовый образ Alpine 3.19, вы получите версию клиента PostgreSQL, которая работает с серверами с основной версией 16.
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine as base
RUN apk add --no-cache postgresql-client
CMD pg_dump --version
Итоговая версия pg_dump
:
pg_dump (PostgreSQL) 16.2
Ааа! Нет, это просто я был придурком. Простая ошибка копирования-вставки. Обновил свой ответ.
Я попробовал вышеописанное, но получил следующую ошибку: Ошибка DT1001 не удалось устранить: ошибка анализа файла dockerfile в строке 8: неизвестная инструкция: as (вы имели в виду arg?)