Nó không thành công vì Postgres không chạy trong vùng chứa trong quá trình xây dựng, nó chỉ bắt đầu trong CMD
khi một vùng chứa chạy.
Tập lệnh entrypoint cho hình ảnh Docker hỗ trợ chạy các bước thiết lập - bất kỳ tệp .sql hoặc .sh nào trong /docker-entrypoint-initdb.d
thư mục sẽ được thực thi khi vùng chứa bắt đầu.
Vì vậy, bạn có thể thực hiện việc này bằng cách đặt thiết lập tiện ích mở rộng của mình trong một tập lệnh SQL và sao chép tập lệnh vào hình ảnh trong thư mục init:
> cat hstore.sql
create extension hstore
> cat Dockerfile
FROM postgres:9.5
COPY hstore.sql /docker-entrypoint-initdb.d
Khi bạn tạo hình ảnh đó, tập lệnh SQL sẽ ở đúng vị trí để được thực thi, vì vậy bất cứ khi nào vùng chứa chạy từ hình ảnh đó, nó sẽ cài đặt tiện ích mở rộng.