Het mislukt omdat Postgres tijdens de build niet in de container wordt uitgevoerd, het is alleen gestart in de CMD
wanneer een container loopt.
Het entrypoint-script voor de Docker-image heeft ondersteuning voor het uitvoeren van setup-stappen - alle .sql- of .sh-bestanden in de /docker-entrypoint-initdb.d
directory wordt uitgevoerd wanneer de container start.
U kunt dit dus doen door uw extensie-setup in een SQL-script te plaatsen en het script naar de afbeelding in de init-directory te kopiëren:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Wanneer u die afbeelding bouwt, bevindt het SQL-script zich op de juiste plaats om te worden uitgevoerd, dus wanneer een container vanuit de afbeelding wordt uitgevoerd, wordt de extensie geïnstalleerd.