Tutorial ini menjelaskan metode langkah demi langkah untuk menyiapkan dan menggunakan container Docker MySQL dengan contoh
Docker adalah platform orkestrasi wadah yang memungkinkan kita untuk menjalankan image dari aplikasi apa pun (dalam hal ini server MySQL) pada sistem host (yang dapat berperilaku di OS apa pun yang diinstal – contoh. Linux, Windows, MacOS, dll)
Menggunakan MySQL dengan buruh pelabuhan akan membantu pengembang atau siapa pun yang ingin belajar atau bereksperimen dengan MySQL tanpa melalui kerumitan instalasi atau konfigurasi apa pun
Menjalankan melalui buruh pelabuhan hanya mengharuskan Anda memasang buruh pelabuhan di mesin Anda, dan kemudian Anda dapat menggunakan gambar buruh pelabuhan MySQL yang tersedia
=> Klik di sini untuk seri tutorial MySQL lengkap
Apa yang Akan Anda Pelajari
Memahami MySQL Docker
Menjalankan MySQL dengan wadah Docker adalah mekanisme yang banyak digunakan, terutama untuk arsitektur layanan mikro di mana biasanya setiap layanan mikro bekerja dengan basis data/tabelnya sendiri dan pengujian integrasi/komponen yang terisolasi dapat dijalankan pada versi basis data yang ditampung
Konsep Kontainer MySQL
Pikirkan wadah buruh pelabuhan sebagai mesin virtual ringan yang dapat berjalan secara independen dari aplikasi lain (dan dapat hidup dalam konteksnya sendiri). Aplikasi apa pun – misalnya, MySQL, dalam hal ini, dapat digabungkan bersama sebagai wadah dan dapat digunakan di host lokal atau jarak jauh
Sekarang wadah ini adalah ekosistem mini dan memiliki semua komponen yang digabungkan bersama yang diperlukan agar MySQL dapat dijalankan dengan benar
Prasyarat. Menginstal Docker
Untuk membuat MySQL sebagai wadah buruh pelabuhan, mesin host harus memasang buruh pelabuhan
>> Bacaan yang disarankan untuk menginstal Docker=> Instalasi Dan Pengantar Docker
Untuk memvalidasi instalasi buruh pelabuhan, cukup jalankan perintah di bawah ini
docker versionJika output ditampilkan seperti di bawah ini, ini berarti instalasi docker berhasil
Langkah-langkah Setup MySQL Dengan Docker
#1) Tarik gambar buruh pelabuhan yang diinginkan
Gambar Docker untuk MySQL dapat ditarik dari hub docker. Kami akan menarik gambar terbaru mysql-server dari hub buruh pelabuhan dalam contoh kami. Gambar wadah Docker diterbitkan melalui sumber resmi di hub buruh pelabuhan
>> Klik di sini untuk menemukan semua gambar/versi buruh pelabuhan yang tersedia dari MySQL
Kecuali versi tertentu diperlukan, kami selalu dapat menentukan tag sebagai 'terbaru' yang akan menarik versi MySQL terbaru yang tersedia dari registri docker hub yang biasa disebut docker hub
Sintaks untuk menarik gambar buruh pelabuhan
docker pull mysql:latest_Setelah dieksekusi, Anda akan melihat output seperti di bawah ini
Setelah gambar kontainer diunduh sepenuhnya di host, Anda dapat melihat semua gambar yang diunduh dengan menjalankan perintah di bawah ini
docker image ls#2) Mulai wadah dengan gambar yang ditarik
Sekarang, mari kita mulai wadah menggunakan docker image yang diunduh untuk MySQL
Secara default, jika tidak ada kata sandi root yang ditentukan bersama dengan perintah docker saat membuat wadah, akan ada kata sandi acak yang dibuat untuk pengguna root dan untuk mengambil kata sandi root, kita perlu mengakses log wadah buruh pelabuhan
a) Mari pertama-tama jalankan wadah dengan gambar yang diunduh
Sintaksis
docker run --name {optional-name-for-the-container} -d {name of the image tag}Dalam sintaks di atas,
- –nama adalah kolom opsional dan dapat digunakan untuk menentukan nama ramah yang dapat digunakan untuk merujuk wadah nanti. Jika ini tidak ditentukan – Docker memberikan nama yang dibuat secara acak ke wadah
- -d mewakili nama gambar yang digunakan untuk membuat wadah. Jika gambar ditarik lebih awal, gambar yang sama akan digunakan kembali. Jika gambar tidak ada di sistem lokal, maka ini pertama-tama akan menarik gambar dari hub buruh pelabuhan dan kemudian membuat wadah
Contoh. Kami akan membuat wadah bernama learn-mysql-docker dari tag gambar yang digunakan sebelumnya - mysql. terbaru
docker run --name learn-mysql-docker -d mysql:latest -e MYSQL_RANDOM_ROOT_PASSWORD=1_Perhatikan penggunaan -e flag, yang tidak lain adalah menentukan variabel lingkungan. Di sini kami telah menentukan nilai untuk MYSQL_RANDOM_ROOT_PASSWORD=1
Ini berarti bahwa saat memulai server MySQL, kata sandi root akan diatur ke String yang dibuat secara acak (nanti kita akan lihat di bagian selanjutnya, bagaimana kita dapat mengambil kata sandi acak yang dihasilkan secara dinamis melalui log wadah Docker)
Catatan. Ada opsi lain juga untuk pengaturan default kata sandi root
Pilihan yang tersedia adalah sebagai berikut
- Menentukan kata sandi khusus. Gunakan variabel lingkungan bernama MYSQL_ROOT_PASSWORD dan setel ke kata sandi yang diinginkan untuk pengguna root
- Membuat kata sandi acak dibuat. Gunakan variabel lingkungan bernama MYSQL_RANDOM_ROOT_PASSWORD dan atur nilainya menjadi 1
- Mengatur kata sandi kosong untuk pengguna root. Gunakan variabel lingkungan bernama MYSQL_ALLOW_EMPTY_PASSWORD dan atur ke 1. Ini akan menetapkan kata sandi kosong/nol untuk pengguna root
Ada variabel lingkungan lain yang tersedia, yaitu MYSQL_ONETIME_PASSWORD. Ini, ketika disetel ke true (1), akan kedaluwarsa kata sandi pengguna root dan mengharapkan pengguna membuat kata sandi baru setelah login pertama. (Harap dicatat bahwa variabel env ini hanya diterapkan di versi MySQL lebih dari 5. 6)
Keluaran
Setelah perintah di atas dijalankan, Anda akan melihat buruh pelabuhan menampilkan ID wadah yang dibuat
Sebagai contoh
Mari memvalidasi apakah penampung berhasil dibuat dengan mencantumkan penampung buruh pelabuhan yang tersedia di host dan memfilter nama penampung yang telah kami tentukan
docker container ls -a | grep "learn-mysql-docker"Anda akan melihat output seperti di bawah ini (jika wadah berhasil dimulai)
b) Ambil kata sandi root. Untuk terhubung dengan pengguna root, kita perlu memasukkan kata sandi. Karena kami telah menyebutkan variabel env untuk menyetel/mengizinkan kata sandi acak, kami akan mengambil kata sandi ini dari log wadah Docker
Jalankan perintah di bawah ini untuk mengambil log dan kata sandi yang dibuat secara acak
docker logs learn-mysql-docker | grep "GENERATED ROOT PASSWORD:"_Keluaran
Seperti yang disorot pada gambar di atas, Anda dapat melihat kata sandi acak dibuat. Di bagian selanjutnya, kami akan menggunakan kata sandi ini untuk masuk dengan pengguna root
c) Bagaimana cara memulai wadah buruh pelabuhan dengan kata sandi yang diinginkan?
Jika kita tidak ingin kata sandi acak dihasilkan saat penampung dimulai, kita dapat menentukan variabel lingkungan yang berbeda bernama MYSQL_ROOT_PASSWORD dan menentukan nilai variabel ini sebagai kata sandi yang diinginkan yang ingin kita tetapkan untuk pengguna root
Dalam hal ini, perintah untuk membuat wadah adalah seperti di bawah ini
docker run --name learn-mysql-docker -d mysql:latest -e MYSQL_ROOT_PASSWORD=`password123`#3) Masuk ke wadah yang dibuat
Untuk melakukannya, kami akan menggunakan nama penampung yang dibuat (atau id) dan masuk ke aplikasi bash shell di dalam penampung
docker exec -it learn-mysql-docker bash_Jika wadah sudah habis dan berhasil dibuat, setelah menjalankan perintah di atas Anda akan melihat bash shell di dalam wadah
#4) Jalankan shell MySQL
Setelah masuk ke wadah, kami akan memulai shell MySQL dengan pengguna root dan menentukan kata sandi yang diperoleh secara acak
#5) Jalankan contoh perintah MySQL
Setelah kita masuk dengan pengguna root, mari sekarang coba jalankan beberapa perintah sederhana untuk memastikan semuanya bekerja dengan baik
a) TAMPILKAN semua database. Jalankan perintah di bawah ini
SHOW DATABASES;_b) Ubah kata sandi pengguna root menjadi 'Kata Sandi' - Jalankan perintah di bawah ini dan coba masuk lagi dengan pengguna root (terhadap kata sandi baru i. e. Kata sandi, yang diatur oleh perintah ini)
Menghubungkan ke MySQL Docker Dari Mesin Host
Pada bagian di atas, kita telah login ke shell MySQL yang ada di dalam container docker. Kami juga dapat mengekspos port dari wadah MySQL di buruh pelabuhan ke port lokal dan menggunakannya untuk pengembangan lokal untuk terhubung ke MySQL
Mari kita coba memahami langkah-langkah berbeda yang terlibat di sini
#1) Mulai wadah dan petakan ke port lokal. Pada langkah ini, kita akan memetakan port dari docker container ke port di localhost yang akan digunakan untuk terhubung ke MySQL
a) Pertama hentikan/hapus wadah yang telah kita buat di bagian sebelumnya. Ini diperlukan untuk menghindari kebingungan dan mendapatkan kesalahan terkait alamat port
Perintah yang harus dijalankan adalah
docker pull mysql:latest_0Setelah penampung dihentikan, kami dapat menghapus penampung menggunakan perintah di bawah ini
docker pull mysql:latest_1b) Setelah wadah dihapus, kita dapat memulai wadah baru dengan gambar MySQL yang sama dan juga memetakan port docker ke port host lokal
Ini dapat dilakukan dengan menjalankan perintah di bawah ini
docker pull mysql:latest_2Mari kita coba pahami perintah di atas
- -p mewakili port dan 13306. 3306 mewakili pemetaan port 3306 dari wadah buruh pelabuhan ke 13306 di localhost (atau mesin host tempat wadah itu ada)
- –name adalah nama ramah untuk docker container yang sedang kita inisialisasi
- -e mewakili variabel Lingkungan. Kami menyetel MYSQL_ROOT_PASSWORD ke 'Kata Sandi' yang tidak lain adalah kata sandi untuk pengguna root
- -d mewakili nama gambar buruh pelabuhan. Dalam hal ini, mysql. terbaru akan menjadi gambar yang akan digunakan untuk membuat wadah
c) Pastikan tidak ada kesalahan setelah perintah di atas dijalankan. Jika semuanya berjalan dengan baik, perintah di atas akan mencetak ID wadah yang dihasilkan
Lihat gambar di bawah ini
#2) Setelah wadah berhasil dimulai, sambungkan ke MySQL dari localhost -menggunakan baris perintah atau alat GUI seperti meja kerja MySQL
a) Mari jalankan/sambungkan ke database MySQL melalui baris perintah (Prasyarat – harap pastikan bahwa localhost juga telah menginstal alat Baris Perintah MySQL)
docker pull mysql:latest_3Setelah perintah dijalankan, Anda akan melihat bahwa Anda terhubung ke instance MySQL berbasis docker. Anda dapat mencoba menjalankan perintah seperti
SHOW DATABASES;_Dan pastikan pengaturannya berfungsi dengan baik
b) Untuk terhubung melalui meja kerja MySQL, Anda cukup menentukan nama host sebagai localhost dan no port. sebagai port yang dipetakan yang digunakan
Siapkan koneksi baru dengan localhost dan port sebagai 13306
Simpan kata sandi di gantungan kunci seperti yang ditunjukkan pada gambar di bawah ini
Kemudian, hubungkan ke database
Menyiapkan MySQL Docker Menggunakan Docker Compose File
Komposisi Docker adalah detail yang diperlukan untuk menyiapkan gambar/wadah buruh pelabuhan dalam bentuk template, yang dalam format YAML. Hal ini memudahkan untuk membagikan dan memeriksanya ke dalam sistem kontrol versi seperti TFS atau GIT, di mana siapa pun yang mengerjakan proyek dapat dengan mudah mengambil file ini dan menjalankannya untuk menyiapkan wadah buruh pelabuhan yang diperlukan dengan informasi yang diperlukan
Ada beberapa utilitas dan halaman web yang memungkinkan Anda membuat file pembuat buruh pelabuhan dengan mudah
Kita dapat menggunakan yang dari sini dan cukup menempelkan perintah buruh pelabuhan yang telah kita gunakan untuk membuat wadah
Lihat gambar di bawah ini
Kita dapat menyalin konten dari file yang dibuat dan menyimpan konten dengan file bernama docker-compose. yaml di folder di desktop/laptop Anda
Setelah file disimpan, navigasikan ke folder (tempat file disimpan) dan jalankan perintah di bawah ini
docker pull mysql:latest_5Jika konten file penulisan sudah benar dan gambar tersedia, wadah buruh pelabuhan baru akan dimulai (dan dapat digunakan dengan cara yang sama seperti yang dijelaskan di bagian sebelumnya dari artikel ini)
Pertanyaan yang Sering Diajukan
T #1) Bagaimana cara membuat database di MySQL Docker?
Menjawab. MySQL Docker dalam wadah contoh dapat dihubungkan melalui baris perintah dengan masuk ke wadah. Setelah koneksi dibuat, perintah SQL apa pun dapat dijalankan
Untuk terhubung ke MySQL di dalam wadah, berikut sintaksnya
docker pull mysql:latest_6Setelah perintah di atas dijalankan, Anda akan diminta untuk memasukkan password database. Dan setelah kata sandi diverifikasi, Anda dapat menjalankan perintah berbasis SQL apa pun
T #2) Bagaimana cara mengekspos port tertentu dari buruh pelabuhan untuk MySQL?
Menjawab. Pemetaan port dapat ditentukan saat wadah buruh pelabuhan sedang dibuat. Misalnya, jika Anda ingin memetakan port docker ke port tertentu di localhost Anda, Anda dapat menggunakan perintah seperti
docker pull mysql:latest_2Di sini 13306 adalah port di mesin host, dan 3306 adalah port di container
T #3) Bagaimana cara memulai ulang/menghentikan dan menghapus wadah MySQL berbasis buruh pelabuhan?
Menjawab. Ada beberapa perintah praktis dan berguna untuk wadah buruh pelabuhan
- Mengulang kembali. Perintah ini digunakan untuk memulai kembali wadah yang sedang berjalan
- Berhenti. Perintah ini akan menghentikan sementara wadah yang sedang berjalan (dan dapat dilanjutkan/dimulai kembali nanti)
- Menghapus. Ini akan menghapus wadah buruh pelabuhan dan sumber daya apa pun yang terkait dengan wadah itu
T #4) Bagaimana cara terhubung ke instance MySQL yang di-docker dari mesin host?
Menjawab. Setelah port docker dan port localhost dipetakan, kita dapat terhubung ke instance MySQL yang ada di dalam docker dari localhost melalui baris perintah atau melalui alat UI seperti meja kerja MySQL
Untuk memulai melalui baris perintah – Alat baris perintah MySQL juga harus diinstal pada mesin host
Perintah di bawah ini dapat digunakan untuk terhubung ke instance MySQL di buruh pelabuhan melalui host
docker pull mysql:latest_3T #5) Bagaimana kita bisa menjalankan versi tertentu dari MySQL menggunakan Docker?
Menjawab. Saat menentukan opsi gambar buruh pelabuhan (menggunakan -d), saat membuat penampung, kita dapat menentukan gambar/versi penampung yang tersedia
Jika yang terbaru ditentukan, itu akan mengambil gambar yang diterbitkan terakhir dari penampung yang diberikan
Misalnya, untuk MySQL kita dapat menentukan mysql. terbaru untuk mengambil versi terbaru dan sesuatu seperti mysql. 8. 0. 22 misalnya untuk mengambil versi 8. 0. 22
>> Lihat dokumentasi Docker Hub untuk MySQL untuk melihat daftar lengkap semua versi yang tersedia
Kesimpulan
Dalam tutorial ini, kita telah belajar tentang menyiapkan server MySQL menggunakan Docker, bukan mesin host yang sebenarnya
Docker adalah sistem orkestrasi wadah yang kuat, yang memungkinkan pengguna untuk menghosting sejumlah aplikasi sebagai wadah dan memungkinkan mereka untuk digunakan sebagai sistem yang terisolasi itu sendiri. Itu juga membutuhkan pengaturan minimal dan menyediakan cara cepat untuk menghindari semua kerepotan pengaturan hanya dengan beberapa perintah
Saat ini, dengan arsitektur layanan mikro di mana berbagai layanan mikro bergantung pada database mereka sendiri, menerapkan server MySQL sebagai wadah Docker telah menjadi praktik yang cukup umum.
Ini juga banyak digunakan untuk eksekusi lokal apa pun, membuat bukti konsep atau bahkan untuk menjalankan tes integrasi ujung ke ujung di lingkungan yang terisolasi