Saya ingin membuat gambar buruh pelabuhan di atas mysql yang sudah berisi skema yang diperlukan untuk aplikasi saya.
Saya mencoba menambahkan baris ke Dockerfile yang akan mengimpor skema saya sebagai file sql. Saya melakukannya (Dockerfile saya):
FROM mysql
ENV MYSQL_ROOT_PASSWORD="bagabu"
ENV MYSQL_DATABASE="imhere"
ADD imhere.sql /tmp/imhere.sql
RUN "mysql -u root --password="bagabu" imhere < /tmp/imhere.sql"
Menurut pemahaman saya, itu tidak berhasil karena gambar buruh pelabuhan mysql tidak mengandung klien mysql (praktik terbaik menyatakan "jangan menambahkan hal-hal hanya karena mereka akan menyenangkan untuk dimiliki") (apakah saya salah tentang ini?)
apa mungkin cara yang baik untuk melakukan ini? Saya sudah memikirkan beberapa hal, tetapi semuanya tampak seperti solusi yang berantakan.
- instal klien mysql, lakukan apa yang harus saya lakukan dengannya, kemudian hapus / bersihkan.
- salin biner klien mysql ke gambar, lakukan apa yang harus saya lakukan, lalu hapus.
- Buat skema di server sql lain dan salin file db sendiri secara langsung (ini tampak sangat berantakan dan terdengar seperti kumpulan masalah yang terkontaminasi)
Ada saran? Semoga dengan cara yang mudah dipelihara nanti dan mungkin sesuai dengan praktik terbaik juga?
Jawaban:
Anda harus meletakkan skrip init Anda di direktori yang dipasang sebagai
/docker-entrypoint-initdb.d
- lihat bagian "Menginisialisasi contoh baru" di dokumen gambar MySQL Docker .sumber
/docker-entrypoint-initdb.d
ada di host tetapi sebenarnya di dalam wadah. Saya mengubahADD
perintah untuk menyalin ke direktori itu dan menghapusRUN
perintah. Docker berhasil membangun gambar dan saya mengujinya dan berfungsi.Saya harus melakukan ini untuk keperluan tes.
Inilah yang saya lakukan dengan memanfaatkan gambar MySQL / MariaDB aktual di dockerhub dan pembuatan multi-tahap:
Contoh kerja lengkap di sini: https://github.com/lindycoder/prepopulated-mysql-container-example
sumber
Kredit ke @Martin Roy
Membuat perubahan kecil agar berfungsi untuk ...
Content Dockerfile
Setup konten.sql
Contoh kerja lengkap di sini: https://github.com/iamdvr/prepopulated-mysql-container-example
sumber
Perangkat lunak manajemen seperti Ansible dapat membantu Anda untuk mengotomatiskan impor mysql dengan mudah tanpa perlu menginstal dan menginstal ulang klien. Ansible memiliki fitur bawaan yang hebat untuk mengelola gambar dan kontainer docker dan database mysql.
sumber