Рейтинг:0

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

флаг cn

Мне нужно создать образ докера 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». Подозреваю, что конфигурация и компиляция происходит в этом разделе:

# создавать файлы .deb из пакетов с исходным кодом основной ветки разработки (которые проверяются с помощью apt-get)
            получить обновление; \
            apt-get build-dep -y \
                postgresql-общий pgdg-брелок \
                "postgresql-$PG_MAJOR=$PG_VERSION" \
            ; \
            DEB_BUILD_OPTIONS="nocheck parallel=$(nproc)" \
                apt-получить исходный код --скомпилировать \
                    postgresql-общий pgdg-брелок \
                    "postgresql-$PG_MAJOR=$PG_VERSION" \
            ; \

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

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

выберите дайджест ('тест', 'sha3-512')
Ошибка SQL [22023]: ОШИБКА: невозможно использовать «sha3-512»: нет такого алгоритма хэширования

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

postgres=# \df дайджест
                       Список функций
 Схема | Имя | Тип данных результата | Типы данных аргумента | Тип 
--------+------+----+--------------- ------+------
(0 строк)

postgres=# выберите * из pg_available_extensions, где name='pgcrypto';
имя |версия_по умолчанию|установленная_версия|комментарий |
--------+---------------+---+------- --+
pgcrypto|1.3 |1.3 |криптографические функции|
флаг cn
Если я запускаю официальный образ и выполняю в нем "pg_config", то "--with-openssl" присутствует в CONFIGURE, но алгоритм sha3-512 все равно недоступен. Так что, возможно, проблема не в отсутствующей опции --with-openssl. Но тогда что?
Рейтинг:0
флаг cn

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.