如何构建具有HLL扩展名的Postgres:11图像?

时间:2019-09-16 08:53:52

标签: postgresql docker

我想制作一个Dockerfile来构建Postgres:11映像,该映像已经安装了postgresql-hll extension。  我对Docker没有经验,所以我不知道要正确安装此扩展程序。

1 个答案:

答案 0 :(得分:0)

为此,您需要:

  1. 克隆git存储库:
git clone https://github.com/citusdata/postgresql-hll.git
  1. 创建一个名为Dockerfile的文件(与在步骤1创建的postgresql-hll文件夹处于同一级别),内容如下:
ARG psversion=11

FROM postgres:$psversion

COPY postgresql-hll /postgresql-hll
RUN apt-get update -y && apt-get install -y postgresql-server-dev-${PG_MAJOR} make gcc g++

WORKDIR /postgresql-hll

RUN PG_CONFIG=/usr/bin/pg_config make
RUN PG_CONFIG=/usr/bin/pg_config make install

RUN echo "shared_preload_libraries = 'hll'" >> /usr/share/postgresql/postgresql.conf.sample

COPY create_extension.sql /docker-entrypoint-initdb.d/
  1. 在与Dockerfile相同级别上创建文件create_extension.sql,内容如下:
CREATE EXTENSION hll;
  1. 建立您的形象:
# build for POSTGRES 11
docker build -t hll:1.0 --build-arg psversion=11 .

# build for POSTGRES 9.6
docker build -t hll:1.0 --build-arg psversion=9 .

注意:POSTGRES 9.6的版本在尝试加载库时出现错误。这里是为了完整性,也许有人可以为修复它做出贡献。

  1. 基于此图像运行容器
docker run -d --name hll hll:1.0
  1. 在新创建的容器中打开外壳:
docker exec -ti hll bash
  1. 在容器运行中:
su postgres
psql
\dx

输出应显示已安装的hll扩展名。