先创建一个 mysql文件夹用于存储db文件

mkdir mysql

然后创建 docker-compose 文件

vim docker-compose.yml

写入内容

version: '3.1'

services:
 mysql:
 container_name: mysql
 image: mysql/mysql-server:5.7
 ports:
 - "3306:3306"
 environment:
 MYSQL_DATABASE: database
 MYSQL_ROOT_PASSWORD: password
 MYSQL_ROOT_HOST: '%'
 restart: always
 volumes:
 - "./data/mysql/db:/var/lib/mysql"
 - "./data/mysql/config/my.cnf:/etc/my.cnf"

db 的数据挂载到 .data/mysql/db/下

config 挂载到./data/mysql/config/ 下, 所以要先在 docker-compose.yml 同级目录下创建一下文件夹及文件

-data
    -mysql
        -config
            my.cnf
        -db

my.cnf 的内容为以下

[mysqld]

bind-address = 0.0.0.0
max_connections=200
max_connect_errors=10
character-set-server=utf8

[mysql]
default-character-set=utf8

[client]
port=3306

弄好这些后就可以用 docker-compse up -d 启动mysql

结束服务用docker-compose down

如果没有启动成功可以用docker logs -f mysql 来查看log

这里可能会出现mysql 初始化异常

 --initialize specified but the data directory has files in it. Aborting.w

我这里尝试了 给 data 目录下的文件夹赋了775权解决,如果没有解决,可以参考以下stackoverflow的这个帖子

记得服务器开放3306 的端口