Det misslyckas eftersom Postgres inte körs i behållaren under bygget, det har bara startat i CMD
när en container körs.
Entrypoint-skriptet för Docker-avbildningen har stöd för att köra installationssteg - alla .sql- eller .sh-filer i /docker-entrypoint-initdb.d
katalogen kommer att köras när behållaren startar.
Så du kan göra detta genom att sätta din tilläggskonfiguration i ett SQL-skript och kopiera skriptet till bilden i init-katalogen:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
När du bygger den bilden kommer SQL-skriptet att vara på rätt plats för att köras, så närhelst en behållare körs från bilden kommer den att installera tillägget.