Docker - 如何在Docker容器中创建/安装扩展?

时间:2017-11-06 14:54:24

标签: postgresql docker postgresql-extensions

我正在使用posgres:10.0图像在容器内运行PostgreSQL。我的docker-compose.yml看起来很简单:

version: "2"
services:
  db:
    image: "postgres:10.0"
    environment:
    - POSTGRES_USER=postgres
    - POSTGRES_DB=postgres
    volumes:
    - ./volumes/postgresql/postgresql.sh:/docker-entrypoint-initdb.d/postgresql.sh
    ports:
    - 5432:5432

postgresql.sh

#!/bin/bash

echo wal_level=logical              >> $PGDATA/postgresql.auto.conf
echo max_replication_slots=1        >> $PGDATA/postgresql.auto.conf
echo host replication all all trust >> $PGDATA/pg_hba.conf

对于我的项目,我们将开始使用Multicorn扩展,请参阅http://multicorn.org/。要进行/ make install,我需要这样做:

git clone git://github.com/Kozea/Multicorn.git
cd Multicorn
make && make install

然后,我可以添加一个multicorn.sql脚本并将其添加到/docker-entrypoint-initdb.d/目录中,该目录将在Docker容器启动时调用:

CREATE EXTENSION multicorn;

但是如何在Docker容器中制作/ make multicorn?理想情况下,我想继续使用posgres:10.0而不是发明/创建我自己的版本,因为我不想继承维护麻烦。

1 个答案:

答案 0 :(得分:1)

你应该创建一个自己的Dockerfile - 这就是Dockerfiles的意义;)否则你必须在启动时用脚本做一些黑客攻击或类似的东西。不要那样做......

另一个快速说明:如果您想从源代码构建它,您可能需要查看它并使用多阶段docker构建:https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds