Как создать образ docker postgres с поддержкой pgcrypto sha3-512?

. Мне нужно создать образ докера postgresql 11 с поддержкой хеш-функции sha3-512. По умолчанию официальные образы докеров postgres не поддерживают это. У меня уже есть несколько систем, использующих официальные образы докеров. Мне нужен новый образ, который работает точно так же, как и официальный, за исключением того, что в нем есть поддержка этих хеш-функций. Моя идея состояла в том, чтобы создать копию официального файла Dockerfile и изменить его.

Согласно разделу примечаний к конфигурации здесь:https://www.postgresql.org/docs/11/pgcrypto.html#id-1.11.7.34.10хеш-функции SHA224/256/384/512 поддерживаются только в том случае, если postgresql был сконфигурирован и собран с помощью--with-openssl

Я скопировал Dockerfile и скрипт точки входа отсюда:

https://github.com/docker-library/postgres/tree/master/11/stretch

а потом я застрял. Я понятия не имею, как и где добавить «--with-openssl». Я подозреваю, что конфигурация и компиляция происходят в этом разделе :

# build.deb files from upstream's source packages (which are verified by apt-get)
            apt-get update; \
            apt-get build-dep -y \
                postgresql-common pgdg-keyring \
                "postgresql-$PG_MAJOR=$PG_VERSION" \
            ; \
            DEB_BUILD_OPTIONS="nocheck parallel=$(nproc)" \
                apt-get source --compile \
                    postgresql-common pgdg-keyring \
                    "postgresql-$PG_MAJOR=$PG_VERSION" \
            ; \

, но на данный момент я не знаю, что делать или что менять.

Сама ошибка такая

select digest('test','sha3-512')
SQL Error [22023]: ERROR: Cannot use "sha3-512": No such hash algorithm

Вроде бы никаких дополнительных хеш-алгоритмов не добавлено:

postgres=# \df digest
                       List of functions
 Schema | Name | Result data type | Argument data types | Type 
--------+------+------------------+---------------------+------
(0 rows)

postgres=# select * from pg_available_extensions where name='pgcrypto';
name    |default_version|installed_version|comment                |
--------+---------------+-----------------+-----------------------+
pgcrypto|1.3            |1.3              |cryptographic functions|
0
задан 21 November 2021 в 14:03
1 ответ

Попробовав различные возможные решения (с некоторой помощью), я обнаружил, что postgres:11.14-bullseyeработает правильно и содержит все хэш-функции openssl. Интересно, что по умолчанию postgres:11их не хватает.

0
ответ дан 21 November 2021 в 15:24

Теги

Похожие вопросы