MySQL (dan varian seperti Percona Server) menyediakan fasilitas untuk menyemai database pada awal kontainer pertama yang dijelaskan di bagian "Menginisialisasi instance baru" di halaman hub buruh pelabuhan .
Dockerfile yang menggunakan teknik ini akan terlihat seperti
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/
Catatan:garis miring direktori itu penting.
Saat Anda docker run
gambar ini, buruh pelabuhan akan membuat wadah, buruh pelabuhan -entrypoint.sh
akan mengeksekusi skrip sql, dan kemudian wadah akan siap untuk melayani data.
Data akan tetap ada melalui restart container - data seed dan modifikasi selanjutnya.
Anda dapat menggunakan kembali container untuk waktu startup yang lebih cepat - container berikutnya tidak perlu menginisialisasi database atau seed data. Saat Anda membutuhkan data asli, hapus container dan docker run
gambar lagi.
Saat Anda menghapus wadah, ingatlah untuk menghapus volume buruh pelabuhan yang berisi data db:docker rm -v $CONTAINER_NAME
.
Saya menggunakan metode ini untuk menyediakan data standar untuk bahasa/kerangka POC serta CI/CD. Menginisialisasi database baru dan menyemai data dalam jumlah besar dapat memakan waktu beberapa menit sehingga Anda memerlukan beberapa logika untuk menjeda operasi otomatis hingga Anda berhasil membuat koneksi db.
Semoga ini membantu Anda dalam perjalanan.