如何构建支持 pgcrypto sha3-512 的 docker postgres 镜像?

如何构建支持 pgcrypto sha3-512 的 docker postgres 镜像?

我需要创建一个支持 sha3-512 哈希函数的 postgresql 11 docker 镜像。默认情况下,官方的 postgres docker 镜像不支持此功能。我已经有一些使用官方 docker 镜像的系统。我需要一个新的镜像,它的工作原理与官方镜像完全相同,只是它支持这些哈希函数。我的想法是创建官方 Dockerfile 的副本并对其进行修改。

根据此处的配置说明部分:https://www.postgresql.org/docs/11/pgcrypto.html#id-1.11.7.34.10仅当 postgresql 配置和构建时,才支持 SHA224/256/384/512 哈希函数--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|

答案1

在尝试了不同的可能解决方案(在帮助下)后,我发现它可以postgres:11.14-bullseye正常工作,并且包含所有 openssl 哈希函数。有趣的是,默认postgres:11缺少它们。

相关内容