Не успява, защото Postgres не се изпълнява в контейнера по време на компилацията, стартира се само в CMD
когато контейнер работи.
Скриптът на входната точка за изображението на Docker има поддръжка за изпълнение на стъпки за настройка - всякакви .sql или .sh файлове в /docker-entrypoint-initdb.d
директория ще бъде изпълнена, когато контейнерът стартира.
Така че можете да направите това, като поставите настройката на разширението си в SQL скрипт и копирате скрипта в изображението в директорията init:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Когато изградите това изображение, SQL скриптът ще бъде на правилното място за изпълнение, така че всеки път, когато контейнер се изпълнява от изображението, той ще инсталира разширението.