Non riesce perché Postgres non è in esecuzione nel contenitore durante la compilazione, è solo avviato nel CMD
quando viene eseguito un container.
Lo script del punto di ingresso per l'immagine Docker supporta l'esecuzione dei passaggi di installazione:qualsiasi file .sql o .sh nel /docker-entrypoint-initdb.d
verrà eseguita all'avvio del contenitore.
Quindi puoi farlo inserendo la configurazione dell'estensione in uno script SQL e copiando lo script nell'immagine nella directory init:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Quando crei quell'immagine, lo script SQL sarà nel posto giusto per essere eseguito, quindi ogni volta che un contenitore viene eseguito dall'immagine, installerà l'estensione.