Está falhando porque o Postgres não está sendo executado no contêiner durante a compilação, ele só é iniciado no
CMD
quando um contêiner é executado. O script de ponto de entrada para a imagem do Docker tem suporte para executar etapas de configuração - qualquer arquivo .sql ou .sh no
/docker-entrypoint-initdb.d
diretório será executado quando o contêiner for iniciado. Então você pode fazer isso colocando sua configuração de extensão em um script SQL e copiando o script na imagem no diretório init:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Quando você construir essa imagem, o script SQL estará no lugar certo para ser executado, então sempre que um container rodar a partir da imagem ele instalará a extensão.