Nie działa, ponieważ Postgres nie działa w kontenerze podczas kompilacji, jest uruchamiany tylko w CMD
kiedy kontener jest uruchomiony.
Skrypt punktu wejścia dla obrazu platformy Docker obsługuje uruchamianie kroków konfiguracji — dowolne pliki .sql lub .sh w /docker-entrypoint-initdb.d
katalog zostanie wykonany po uruchomieniu kontenera.
Możesz to zrobić, umieszczając konfigurację rozszerzenia w skrypcie SQL i kopiując skrypt do obrazu w katalogu init:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Kiedy zbudujesz ten obraz, skrypt SQL będzie we właściwym miejscu do wykonania, więc za każdym razem, gdy kontener zostanie uruchomiony z obrazu, zainstaluje rozszerzenie.