GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menjalankan MySQL Dalam Wadah Docker

Wadah Docker memungkinkan Anda menjalankan aplikasi baru dengan cepat tanpa mencemari sistem Anda dengan dependensi. Database MySQL adalah persyaratan umum untuk perangkat lunak berbasis web. Berikut cara menjalankan instance MySQL baru di Docker hanya dalam beberapa menit.

Memulai

Gambar MySQL resmi di Docker Hub menyediakan semua yang diperlukan untuk memulai. Gambar tersedia untuk MySQL versi 5.6, 5.7 dan 8.0. Tentukan yang ingin Anda gunakan sebagai tag gambar:

docker pull mysql:8.0

Sebelum men-deploy, Anda harus menyiapkan volume Docker atau bind mount untuk mempertahankan database Anda. Jika tidak, data Anda akan hilang saat container dimulai ulang. Mount harus dibuat ke /var/lib/mysql dalam wadah.

Anda juga perlu mengatur kata sandi untuk pengguna root MySQL. Gunakan MYSQL_ROOT_PASSWORD variabel lingkungan. MySQL akan menolak untuk menginisialisasi jika variabel ini tidak disetel. Cobalah untuk memilih kata sandi yang aman.

Berikut cara menjalankan MySQL sambil memenuhi prasyarat ini:

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=secret -v $HOME/mysql-data:/var/lib/mysql -d mysql:8.0

Rutinitas pertama MySQL akan membutuhkan waktu beberapa detik untuk diselesaikan. Anda dapat memeriksa apakah database sudah aktif dengan menjalankan docker logs my-mysql . Periksa baris yang berisi ready for connections .

TERKAIT: Cara Menggunakan Docker untuk Menampung PHP dan Apache

Tulisan Docker

docker run perintah dapat dengan cepat menjadi panjang, terutama jika Anda memiliki persyaratan konfigurasi yang kompleks. Menulis docker-compose.yml file lebih dapat dipelihara. Ini contohnya:

version: "3"

services:
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD
    volumes:
      - mysql:/var/lib/mysql

volumes:
  mysql:

Anda dapat memulai MySQL menggunakan MYSQL_ROOT_PASSWORD=secure docker-compose up -d .

TERKAIT: Cara Menginstal Docker dan Docker Compose di Linux

Menghubungkan ke MySQL

Anda bisa mendapatkan shell MySQL interaktif dengan melampirkan ke wadah dan menjalankan mysql memerintah. Ini menyediakan antarmuka baris perintah MySQL lengkap, sehingga Anda dapat menggunakan semua perintah dan flag yang sudah dikenal.

docker exec -it my-mysql mysql -p

Perintah ini membuka shell sebagai pengguna root dan meminta kata sandi.

Untuk mengimpor file SQL dari sistem file Anda, Anda dapat menyalurkannya ke dalam perintah:

docker exec -it my-mysql mysql -psecret database_name < path-to-file.sql

Anda harus mengatur pengikatan port jika Anda ingin mengakses MySQL dari host Anda. Ikat port host ke port container 3306. Tambahkan kode berikut ke docker-compose.yml Anda file, di dalam mysql definisi layanan:

ports:
 - 33060:3306

Ini akan mengikat port 33060 pada mesin host Anda ke port penampung 3306. Jika Anda tidak menggunakan Docker Compose, teruskan -p 33060:3306 untuk docker run saat Anda memulai wadah Anda. Sekarang Anda dapat terhubung ke localhost:33060 menggunakan klien MySQL yang berjalan di host Anda.

Jika Anda perlu terhubung dari lain Wadah Docker, sebaiknya gunakan Docker Compose. Tentukan layanan lain untuk penampung baru. Kedua kontainer akan ada di jaringan Docker yang sama. Anda akan dapat terhubung menggunakan port 3306 pada nama host penampung MySQL (ini cocok dengan nama layanan yang ditentukan dalam file Tulis Anda).

Secara Otomatis Membuat Database dan Pengguna

Gambar MySQL Docker mendukung variabel lingkungan opsional yang memungkinkan Anda mengelola pengaturan database yang dijalankan pertama kali. Setel variabel-variabel ini untuk secara otomatis menyediakan database kosong dan akun pengguna baru:

  • MYSQL_DATABASE – Nama skema database yang akan dibuat saat server melakukan inisialisasi untuk pertama kalinya.
  • MYSQL_USER dan MYSQL_PASSWORD – Buat akun pengguna awal baru, secara terpisah ke root pengguna. Jika Anda juga mengatur MYSQL_DATABASE variabel, akun pengguna baru Anda akan secara otomatis diberikan semua hak istimewa pada database yang baru dibuat.
  • MYSQL_RANDOM_ROOT_PASSWORD – Atur variabel ini agar MySQL secara otomatis menghasilkan kata sandi baru untuk root pengguna. Ini menggantikan MYSQL_ROOT_PASSWORD variabel. Kata sandi yang dihasilkan akan dipancarkan ke aliran keluaran standar saat pertama kali dijalankan. Karena itu, Anda harus berhati-hati saat menggunakan variabel ini di lingkungan CI – kata sandi dapat dilihat oleh siapa saja yang memiliki akses ke log pekerjaan!

File Seed yang Dijalankan Pertama

Anda akan sering memiliki tabel dan data yang ingin Anda seed ke dalam database segera setelah dibuat. Gambar MySQL dikonfigurasi untuk mencari .sh , .sql dan .sql.gz file di /docker-entrypoint-initdb.d penampung direktori.

Setiap file yang ditemukan akan dieksekusi secara berurutan. Urutan akan selalu abjad. Anda dapat menerapkan awalan nama file (mis. 1-seed_tables.sql / 2-seed_data.sql ) untuk memastikan operasi selesai sesuai urutan yang diinginkan.

Mekanisme ini memungkinkan Anda dengan mudah menyemai instans database baru dengan data awal. Anda dapat menulis Dockerfile Anda sendiri, menggunakan MySQL sebagai gambar dasar, dan menambahkan file benih Anda ke /docker-entrypoint-initdb.d . Atau, ikat mount direktori di host Anda ke direktori container.

MySQL akan mengabaikan file inisialisasi kecuali tidak ada database di direktori data. Menghapus konten direktori data Anda akan memicu inisialisasi baru saat Anda memulai ulang penampung.

Mengubah Pengaturan Server

File konfigurasi server MySQL akan dimuat dari /etc/mysql/conf.d . Tambahkan file konfigurasi Anda sendiri ke direktori ini, menggunakan override Dockerfile atau bind mount, untuk menyesuaikan pengaturan server. Anda bisa mendapatkan daftar opsi yang tersedia dari manual Server MySQL.

Menggunakan file opsi memudahkan untuk melihat dan mengedit konfigurasi Anda di masa mendatang. Anda memeriksa file Anda ke dalam kontrol versi bersama proyek Anda. Namun, tanda baris perintah juga tersedia untuk tweak dan eksperimen satu kali.

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --general-log=on

Varian docker run akan memulai MySQL dengan log kueri umum diaktifkan. mysql biner adalah titik masuk gambar, jadi flag diteruskan ke docker run setelah nama gambar akan diteruskan ke mysql .

Kesimpulan

Menjalankan MySQL dalam Docker jauh lebih cepat dan mudah daripada menginstal MySQL Server "bare-metal." Anda dapat menjalankan beberapa instance MySQL tanpa risiko konflik.

Gambar Docker resmi hadir dengan opsi konfigurasi yang berguna dan dukungan bawaan untuk seed database yang dijalankan pertama kali. Ini memungkinkan Anda memulai dengan cepat, baik Anda memulai dari awal atau menggunakan skema yang sudah ada.

TERKAIT: Cara Cepat Menyebarkan WordPress sebagai Docker Container


Docker
  1. Cara Menjalankan MySQL di Docker Container:Panduan Sederhana dan Mudah Diikuti

  2. Cara Keluar dari Kontainer Docker

  3. Cara Membuat Wadah Docker MySQL untuk Pengujian

  1. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  2. Cara SSH Ke Wadah Docker

  3. Cara Menjalankan Perintah di Running Docker Container

  1. Cara Menetapkan IP Statis ke Wadah Docker

  2. Bagaimana cara mengirim sinyal ke program yang dijalankan dalam wadah buruh pelabuhan?

  3. Bagaimana cara menambahkan pengguna ke wadah Docker?