3

我正在使用该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/。要制作/制作安装它,我需要这样做:

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

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

CREATE EXTENSION multicorn;

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

4

1 回答 1

0

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

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

于 2017-11-06T15:48:29.260 回答