Ada banyak hal yang harus dijelaskan di sini, tetapi saya akan menautkan salah satu jawaban saya sebelumnya untuk masalah serupa - langkah-langkahnya sebenarnya sama karena hanya layanan basis data dan latar belakang yang berbeda.
1) Pertama, Anda harus menyediakan skrip bash yang akan menunggu hingga layanan merespons melalui http. Dalam database biasanya terjadi ketika DB siap digunakan dan semua inisialisasi selesai.
skrip wait-for-it.sh yang ditulis oleh vishnubob dalam tunggu-untuk-itu repo @ github.
2) Hal kedua, Anda harus memasukkan skrip itu ke dalam setiap wadah yang membutuhkan DB Anda.
3) Ketiga, Anda menentukan entrypoint
di file penulisan Anda, yang akan mengeksekusi skrip menunggu sebelum command
yang sebenarnya menjalankan layanan Anda akan dipicu.
contoh titik masuk (sebagai referensi ke jawaban yang saya tautkan)
docker-entrypoint.sh:
#!/bin/bash
set -e
sh -c './wait-for-it.sh oracle:3306 -t 30'
exec "[email protected]"
Semua langkah ini dijelaskan secara rinci di sini dalam skenario 2, perhatikan referensi ke jawaban saya yang lain di dalam jawaban yang saya tunjuk di sini. Masalah ini adalah masalah yang sangat umum bagi pemula dan membutuhkan penjelasan yang cukup banyak, jadi saya tidak dapat memposting semuanya di sini.
catatan di sini tentang depends_on
yang mungkin Anda anggap sebagai solusi asli untuk masalah ini dari buruh pelabuhan - seperti yang dinyatakan oleh dokumen, itu hanya menunggu hingga wadah berjalan, belum benar-benar menyelesaikan pekerjaan internalnya - buruh pelabuhan tidak mengetahui berapa banyak yang harus dilakukan.