Postgresql 如何用HLL扩展建立Postgres:11的形象?

Postgresql 如何用HLL扩展建立Postgres:11的形象?,postgresql,docker,Postgresql,Docker,我想制作一个Dockerfile来构建已经安装在里面的Postgres:11的映像。 我对Docker没有经验,因此我不知道如何正确安装此扩展。要做到这一点,您需要: 克隆git存储库: git克隆https://github.com/citusdata/postgresql-hll.git 创建名为Dockerfile(与步骤1中创建的文件夹postgresql hll处于同一级别)的文件,其内容如下: 在Dockerfile的同一级别创建一个文件Create_extension.sql,内

我想制作一个Dockerfile来构建已经安装在里面的Postgres:11的映像。
我对Docker没有经验,因此我不知道如何正确安装此扩展。

要做到这一点,您需要:

  • 克隆git存储库:
  • git克隆https://github.com/citusdata/postgresql-hll.git
    
  • 创建名为
    Dockerfile
    (与步骤1中创建的文件夹postgresql hll处于同一级别)的文件,其内容如下:
  • 在Dockerfile的同一级别创建一个文件
    Create_extension.sql
    ,内容如下:
  • 塑造你的形象:
  • #为POSTGRES 11构建
    docker build-t hll:1.0——build arg psversion=11。
    #为博士后9.6构建
    docker build-t hll:1.0——build arg psversion=9。
    
    注意:POSTGRES 9.6版本在尝试加载库时出错。它在这里是为了完整性,也许有人可以帮助修复它

  • 基于此图像运行容器
  • docker run-d——名称hll-hll:1.0
    
  • 在新创建的容器中打开外壳:
  • docker exec-ti hll bash
    
  • 在容器内部运行:
  • su postgres
    psql
    \dx
    

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

    为此,您需要:

  • 克隆git存储库:
  • git克隆https://github.com/citusdata/postgresql-hll.git
    
  • 创建名为
    Dockerfile
    (与步骤1中创建的文件夹postgresql hll处于同一级别)的文件,其内容如下:
  • 在Dockerfile的同一级别创建一个文件
    Create_extension.sql
    ,内容如下:
  • 塑造你的形象:
  • #为POSTGRES 11构建
    docker build-t hll:1.0——build arg psversion=11。
    #为博士后9.6构建
    docker build-t hll:1.0——build arg psversion=9。
    
    注意:POSTGRES 9.6版本在尝试加载库时出错。它在这里是为了完整性,也许有人可以帮助修复它

  • 基于此图像运行容器
  • docker run-d——名称hll-hll:1.0
    
  • 在新创建的容器中打开外壳:
  • docker exec-ti hll bash
    
  • 在容器内部运行:
  • su postgres
    psql
    \dx
    

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

    非常感谢,这适用于postgres:11,但对于postgres:9.6,它会抛出
    。致命:无法访问文件“hll”:没有这样的文件或目录
    ,我不知道这两个版本之间有什么不同。@MiHaiI仅使用版本11进行了测试。我也会尝试第9版,让你know@BảoGia I将Dockerfile设置为参数化,以便更容易为不同版本的postgres运行它。但是,它不适用于版本9。它看起来像是兼容性错误,但我不能说,因为我不知道PASGRESs或C++。无论如何,我比你提到的错误更进一步。非常感谢,这对postgres:11有效,但对于postgres:9.6它抛出
    。致命:无法访问文件“hll”:没有这样的文件或目录
    ,我不知道这两个版本之间有什么不同。@MiHaiI只使用版本11进行了测试。我也会尝试第9版,让你know@BảoGia I将Dockerfile设置为参数化,以便更容易为不同版本的postgres运行它。但是,它不适用于版本9。它看起来像是兼容性错误,但我不能说,因为我不知道PASGRESs或C++。无论如何,我比你提到的错误更进一步。
    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/
    
    CREATE EXTENSION hll;