Anda mengganti command
yang asli dan Anda tidak memulai postgres dalam skrip ini, itulah sebabnya basis data Anda tidak tersedia.
Anda dapat memasukkan inisialisasi database ke direktori titik masuk container:/docker-entrypoint-initdb.d
. Ini mengeksekusi semua *.sh
dan *.sql
file dalam direktori ini dan tidak menyentuh command
asli .
Semua file dalam direktori ini secara otomatis dieksekusi dalam urutan abjad pada pembuatan container . Oleh karena itu, buat volume untuk menambahkan skrip / file sql Anda ke titik masuk dan biarkan wadah menjalankannya. Ini dijelaskan dalam dokumentasi postgres resmi, bagian "Cara memperluas gambar ini"
.
File penulisan Anda kemudian berubah menjadi seperti ini:
postgres:
build: ./postgres
volumes:
- /shared_folder/postgresql:/var/lib/postgresql
- ./db-init-scripts:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
sedangkan direktori lokal, mis. db-init-scripts
, berisi skrip inisialisasi Anda (ganti namanya jika Anda mau). Salin create_db.sh
ke folder ini dan akan otomatis dijalankan saat Anda membuat wadah baru.
Beberapa database-images melihat direktori entrypoint ini, yang sangat nyaman.
container_name: postgres
Anda tampaknya berlebihan.