У меня есть Dockerfile:
FROM postgres:14.0
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y \
build-essential \
zlib1g-dev \
pkg-config \
git \
mc \
&& echo "2" | apt-get install -y postgresql-server-dev-all \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/pramsey/pgsql-gzip.git \
&& cd pgsql-gzip \
&& make \
&& make install
Я использую этот файл с командами docker-compose.yml и docker-compose up -d. Я получаю доступ к базе данных, но команда CREATE EXTENSION gzip выдаёт:
Ошибка SQL [58P01]: ОШИБКА: не удалось открыть файл управления расширением «/usr/share/postgresql/14/extension/gzip.control»: такого файла или каталога нет.
Как добавить указанное расширение для Postgresql с помощью Docker?





Вам не хватает пакета clang-11 для установки, я добавил этот пакет, а также postgresql-server-dev-14:
Dockerfile_gzip
FROM postgres:14.0
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y \
build-essential \
zlib1g-dev \
pkg-config \
git \
mc \
postgresql-server-dev-14 \
clang-11
RUN git clone https://github.com/pramsey/pgsql-gzip.git \
&& cd pgsql-gzip \
&& make \
&& make install
и после запятой docker-compose up -d, используя этот docker-compose файл:
version: "3"
services:
pg14:
build:
context: .
dockerfile: Dockerfile_gzip
container_name: pg14-gzip
ports:
- 15566:5432
env_file: pgsecrets.env
pgsecrets.env файл
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_INITDB_ARGS = "-A trust"
Мне удалось создать расширение
docker exec -it pg14-gzip bash
root@98ceed5151c0:/# su - postgres
postgres@98ceed5151c0:~$ psql
psql (14.0 (Debian 14.0-1.pgdg110+1))
Type "help" for help.
postgres=# create extension gzip ;
CREATE EXTENSION
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
gzip | 1.0 | public | gzip and gunzip functions.
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=#