创建docker-compose.yml文件,内容如下:
version: '3'
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: "123456"
image: "docker.io/mysql:latest"
container_name: mysql
restart: always
volumes:
- "/data/mysql/data:/var/lib/mysql"
- "/data/mysql/conf:/etc/mysql/conf.d"
ports:
- "3306:3306"
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
redis:
image: redis:latest
container_name: redis
restart: always
command: redis-server --appendonly yes --requirepass "123456"
ports:
- "6379:6379"
volumes:
- /data/redis:/data
相应的需在在/data目录下面创建挂载目录
/data/mysql/data
/data/mysql/conf
/data/redis
在/data/mysql/conf 目录下创建mysql初始化文件 my.cnf
###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# MySQL8 的密码认证插件
default_authentication_plugin=mysql_native_password
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1
max_allowed_packet=16M
# 设置时区
default-time_zone='+8:00'
# binlog 配置
expire-logs-days = 90
max-binlog-size = 500M
# server-id 配置
server-id = 1
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
执行docker-compose up -d