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.