ビルド中にPostgresがコンテナで実行されていないため、失敗しています。PostgresはCMD
でのみ開始されます。 コンテナが実行されたとき。
Dockerイメージのエントリポイントスクリプトは、セットアップ手順の実行をサポートしています-/docker-entrypoint-initdb.d
内の.sqlまたは.shファイル ディレクトリは、コンテナの起動時に実行されます。
したがって、拡張機能の設定をSQLスクリプトに入れ、スクリプトをinitディレクトリのイメージにコピーすることでこれを行うことができます。
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
そのイメージをビルドすると、SQLスクリプトが実行される適切な場所に配置されるため、コンテナーがイメージから実行されるたびに、拡張機能がインストールされます。