Komposisi Docker dengan data MySQL yang persisten

Komposisi Docker dengan data MySQL yang persisten

Itu penting untuk menjaga data tetap persisten untuk wadah yang menjalankan database. Docker menyediakan opsi untuk menjaga file database tetap ada di atas volume Docker atau menyimpan file secara langsung di mesin host.

Gunakan salah satu opsi di bawah ini untuk menjaga data MySQL tetap ada bahkan setelah menciptakan atau menghapus wadah Docker.

Opsi 1 - Menyimpan Data MySQL di Volume Docker

Volume Docker lebih disukai mekanisme oleh Docker untuk menyimpan data persisten dari wadah Docker. Anda dapat dengan mudah membuat volume Docker di mesin host Anda dan memasang ke wadah Docker.

Mari kita buat file komposisi Docker di sistem Anda dengan konten berikut.

Docker-Compose.YML:

Versi: Layanan '3': DB: Gambar: MySQL: 5.7 container_name: DB Lingkungan: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass port: "6033: 3306" volum: -kolum: volum: volum: "6033: 3306" volum: -volum: -volum: -3306 "
1234567891011121314151617Versi: Layanan '3': DB: Gambar: MySQL: 5.7 container_name: DB Lingkungan: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass port: "6033: 3306" volum: -klat: dbol: "6033: 3306" volum: -kiblat: dbolum: "6033: 3306" volum: -3306 "

Konfigurasi di atas mendefinisikan satu volume data bernama "DBData", yang dilampirkan pada wadah MySQL dan dipasang pada/var/lib/mysql direktori. Ini adalah direktori default yang digunakan oleh MySQL untuk menyimpan semua file data.

Selanjutnya, jalankan perintah di bawah untuk meluncurkan Docker Container.

Docker -Compose up -D 

Keluaran:

Membuat jaringan "db_default" dengan driver default membuat volume "db_dbdata" dengan driver default membuat db… selesai 

Anda dapat melihat volume Docker dengan menjalankan Commnad:

Volume Docker ls 

Opsi 2 - Menyimpan data MySQL di mesin host

Kami menyarankan untuk menggunakan volume data alih -alih meletakkan file di mesin host. Tapi, jika Anda suka, Anda dapat menyimpan file database di mesin host. Dalam kasus apa pun wadah Docker dihentikan, Anda dapat meluncurkan kembali wadah menggunakan file data yang ada.

Buat direktori untuk menyimpan file data MySQL Anda. Saya membuat struktur direktori di bawah ini di bawah direktori saat ini.

mkdir -p ./data/db 

Kemudian konfigurasikan komposisi Docker.YML untuk digunakan ./data/db sebagai volume untuk menyimpan semua file yang dibuat oleh server mysql. Selanjutnya buat file COMPOSE di direktori saat ini.

Docker-Compose.YML:

Versi: Layanan '3': DB: Gambar: MySQL: 5.7 container_name: DB Lingkungan: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass port: - "6033: 3306" volume: db_user_pass: - "6033: 3306" volume: db_user_pass: - "6033: 3306" volume: DB_USER_PASS: - "6033: 3306" Volume: DB_USER_PASS: "6033: 3306" volume: - ./data/db:/var/lib/mysql
123456789101112131415Versi: Layanan '3': DB: Gambar: MySQL: 5.7 container_name: DB Lingkungan: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass port: - "6033: 3306" volume: db_user_pass: - "6033: 3306" volume: db_user_pass: - "6033: 3306" volume: DB_USER_PASS: - "6033: 3306" Volume: DB_USER_PASS: "6033: 3306" volume: - ./data/db:/var/lib/mysql

Setelah membuat file, cukup jalankan perintah di bawah ini untuk meluncurkan wadah.

Docker -Compose up -D 

Keluaran:

Membuat jaringan "db_default" dengan driver default membuat db… selesai 

Dalam hal ini wadah MySQL membuat semua file di mesin host di bawah ./direktori data/db. Untuk melihat file -file ini, cukup jalankan perintah di bawah ini.

ls -l ./data/db DRWXR-X --- 2 SystemD-Coredump SystemD-Coredump 4096 Jul 1 11:07 APP_DB -RW-R ----- 1 SystemD-Coredump Systemd-Coredump 56 Jul 1 11:07 Auto.CNF -RW ------- 1 SystemD-Coredump SystemD-Coredump 1676 Jul 1 11:07 CA-Key.PEM -RW-R-R-- 1 SystemD-Coredump SystemD-Coredump 1112 Jul 1 11:07 CA.PEM -RW-R-R-- 1 SystemD-Coredump SystemD-Coredump 1112 Jul 1 11:07 Klien-CERT.PEM -RW ------- 1 SystemD-Coredump SystemD-Coredump 1680 Jul 1 11:07.PEM -RW-R ----- 1 SystemD-Coredump SystemD-Coredump 1346 Jul 1 11:07 IB_BUFFER_POOL -RW-R ----- 1 SystemD-Coredump Systemd-Coredump 50331648 Jul 1 11:07 IB_LOGFILE0 -RW- R ----- 1 SystemD-Coredump SystemD-Coredump 50331648 Jul 1 11:07 IB_LOGFILE1 -RW-R ----- 1 SystemD-Coredump Systemd-Coredump 79691776 Jul 1 11:07 IBDATA1 -RW-R --- --- -1 SystemD-Coredump SystemD-Coredump 12582912 Jul 1 11:07 IBTMP1 DRWXR-X --- 2 SystemD-Coredump SystemD-Coredump 4096 Jul 1 11:07 MySQL DRWXR-X --- 2 SystemD-Coredump-Coredump 4096 1 Jul 11:07 Performance_schema -rw ------- 1 SystemD-Coredump Systemd-Coredump 1680 Jul 1 11:07 Private_Key.PEM -RW-R-R-- 1 SystemD-Coredump SystemD-Coredump 452 Jul 1 11:07 Public_Key.PEM -RW-R-R-- 1 SystemD-Coredump SystemD-Coredump 1112 Jul 1 11:07 Server-CERT.PEM -RW ------- 1 SystemD-Coredump SystemD-Coredump 1680 Jul 1 11:07 Server-Key.PEM DRWXR-X --- 2 SystemD-Coredump SystemD-Coredump 12288 Jul 1 11:07 SYS