PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erstelle ich eine Postgres-Erweiterung im Container?

Es schlägt fehl, weil Postgres während des Builds nicht im Container ausgeführt wird, sondern nur in der CMD gestartet wird wenn ein Container läuft.

Das Einstiegspunktskript für das Docker-Image unterstützt das Ausführen von Einrichtungsschritten – alle .sql- oder .sh-Dateien in /docker-entrypoint-initdb.d Verzeichnis wird beim Start des Containers ausgeführt.

Sie können dies also tun, indem Sie Ihr Erweiterungs-Setup in ein SQL-Skript einfügen und das Skript in das Bild im Init-Verzeichnis kopieren:

> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d

Wenn Sie dieses Image erstellen, befindet sich das SQL-Skript an der richtigen Stelle, um ausgeführt zu werden, sodass jedes Mal, wenn ein Container über das Image ausgeführt wird, die Erweiterung installiert wird.