Salin kod Kod adalah seperti berikut:
$ docker run --name some-mysql -e mysql_root_password=my-secret-pw -d daocloud.io/mysql:tag
some-mysql Nama bekas ditentukan, my-secret-pw menentukan kata laluan pengguna root, dan parameter tag menentukan versi mysql yang anda mahu
Dengan cara ini data tidak berterusan, jadi ia perlu dipasang dalam parameter permulaan
Jadi pangkalan data terus berjalan seperti ini, tetapi kerana program baru-baru ini perlu menyokong ekspresi emoji, set aksara mysql perlu ditukar.
Salin kod Kod adalah seperti berikut:
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e mysql_root_password=my- secret-pw -d daocloud.io/mysql:tag
Pada masa ini, anda boleh melekapkan fail konfigurasi tersuai Dokumentasi rasmi menyatakan bahawa
Apabila perkhidmatan mysql bermula, ia akan menjadi. /etc/mysql/my.cnf Sebagai fail konfigurasi, fail ini akan mengimport semua fail dengan akhiran .cnf dalam direktori /etc/mysql/conf.d. Fail ini memanjangkan atau mengatasi konfigurasi dalam fail /etc/mysql/my.cnf. Jadi anda boleh mencipta fail konfigurasi anda sendiri dan lekapkannya ke direktori /etc/mysql/conf.d dalam bekas mysql.
Jadi cara paling mudah untuk menukar konfigurasi pangkalan data adalah dengan mencipta fail konfigurasi baharu pada mesin hos dan menukarnya kepada utf8mb4
[client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = false character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [mysql] default-character-set=utf8mb4
Kemudian salin fail itu ke bekas docker yang sepadan folder
docker cp /home/my.cnf(宿主机文件路径) [容器id]:/etc/mysql/mysql.conf.d
Akhir sekali, gunakan arahan docker stop dan start untuk memulakan semula bekas untuk memuatkan konfigurasi tersuai.
Bekas yang dikonfigurasikan oleh imej mysql rasmi docker tidak boleh dimulakan
Saya menggunakan imej docker mysql. Mula-mula buat dan mulakan imej:
# docker run --name mysql-b \ > -p 33002:3306 -v /zc/mysql/datadir-b:/var/lib/mysql \ > -e mysql_root_password='123456' -d mysql:latest
Mula seperti biasa, tiada masalah. Biasanya apabila kita menggunakan mysql, kita perlu menetapkan parameter. Untuk menetapkan parameter, kita mesti memasukkan bash bekas dahulu dan melakukan operasi:
docker exec -it mysql-b bash
Fail konfigurasi lalai mysql ialah fail /etc/mysql/my.cnf. Jika anda ingin menyesuaikan konfigurasi, adalah disyorkan untuk mencipta fail .cnf dalam direktori /etc/mysql/conf.d. Fail yang baru dibuat boleh dinamakan sewenang-wenangnya, asalkan akhiran adalah cnf. Item konfigurasi dalam fail yang baru dibuat boleh mengatasi item konfigurasi dalam /etc/mysql/my.cnf. Oleh kerana imej docker rasmi mysql tidak menyediakan editor vim, saya menggunakan arahan cat untuk menjana fail dan menambah kandungan:
# cat >test.cnf <<eof [mysqldump] user=root password='123456' [mysqld] max_allowed_packet=8m lower_case_table_names=1 character_set_server=utf8 max_connections=900 max_connect_errors=600 default-character-set=utf8 eof
Selepas keluar, saya menghentikan bekas dan memulakan semula bekas itu bekas tidak dapat dimulakan.
Penyelesaian
Padamkan bekas asal yang tidak boleh dimulakan. Buat semula bekas baharu. Inti masalahnya ialah fail test.cnf asal mempunyai ralat. Cari baris terakhir fail konfigurasi asal:
default-character-set=utf8
Padamkan baris ini. Hanya pastikan tiada baris sedemikian semasa menambah fail konfigurasi.
Punca masalah
Dalam imej docker rasmi mysql, di bawah label terkini, tiada set aksara lalai dalam [mysqld ] bahagian konfigurasi item konfigurasi ini.
Jika anda ingin melihat semua item konfigurasi, anda boleh menggunakan arahan berikut dan menggunakan saluran paip untuk meletakkan bantuan output ke dalam fail help.txt:
docker run -it --rm mysql:tag --verbose --help > help.txt
di mana teg mewakili teg imej, seperti terkini dan 5.6 .
Atas ialah kandungan terperinci Kaedah konfigurasi tersuai imej mysql rasmi Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!