Pada masa ini, saya menggunakan fail YAML mudah berikut untuk memulakan pelayan MySQL
version: '3.3' services: db: image: mysql/mysql-server restart: always environment: MYSQL_DATABASE: 'db' MYSQL_USER: 'user' MYSQL_PASSWORD: 'strongpasswordnobodycanguessorcrackatall' # Password for root access MYSQL_ROOT_PASSWORD: 'somethingevenmorestrongerthaneverbefore' ports: - '3306:3306' expose: - '3306' volumes: - compose-my-db volumes: - ./:compose-my-db:
Namun, saya perlu menyambung ke bekas dan menggunakan arahan berikut:
将 *.* 上的所有内容授予 'c'@'%';刷新权限;
Ini memberi saya semua kebenaran yang saya perlukan dan membenarkan sambungan jauh melalui pengguna yang dibuat dalam fail karang.
Saya tahu saya boleh mengubah suai fail my.cnf atau menambah skrip init yang dijalankan selepas mysqld dimulakan, tetapi saya mahu pengguna dibuat dalam Docker-Compose.
Saya rasa kita boleh mencapai ini dengan
MYSQL_INITDB
- menyediakan skrip init dalam bekas MySQL.Pertama, anda boleh menambah pembolehubah persekitaran untuk MYSQL_INITDB seperti di bawah
Maka anda perlu mengemas kini konfigurasi volum seperti berikut
Buat fail 01.sql dalam direktori yang sama dengan fail karang docker anda.
Lihat dokumentasi rasmi di sini: https://hub.docker.com/_/mysql/ Di bawah subtopik Memulakan contoh baharu.