一、环境版本
在windows环境下通过docker容器运行各种服务,使用的软件版本如下:
docker desktop :V4.39.0 【docker的安装环境设置略】
mysql:9.2
redis:7.4.2
二、各配置文件
1.已经解决了字符集和排序规则问题造成的中文乱码问题,通过的docker compose脚本如下:
version: '3.8'
services:
mysql:
image: mysql:9.2
container_name: win-mysql
restart: always
environment:
MYSQL_CHARSET: utf8mb4
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
LANG: zh_CN.UTF-8
LC_ALL: zh_CN.UTF-8
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: cms
MYSQL_USER: cms
MYSQL_PASSWORD: cms@123
ports:
- "3306:3306"
volumes:
- D:\pythonwork\RuoYi-Vue3-FastAPI\ruoyi-fastapi-backend\docker\mysql\conf\my.cnf:/etc/mysql/my.cnf
- ./mysql/log:/var/log/mysql/
- ./mysql/data:/var/lib/mysql/ # 数据持久化
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql # 初始化SQL
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
networks:
- app_network
redis:
image: redis:7.4
container_name: win-redis
restart: unless-stopped
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- ./redis/data:/data/ # 数据持久化
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf # 自定义配置
- ./redis/log:/var/log/redis/
networks:
- app_network
networks:
app_network:
driver: bridge
2.mysql配置文件如下:
[client]
port=3306
socket=/var/run/mysql/mysql.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
#connect_timeout=10
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/run/mysql/mysqld.sock
pid-file=/var/run/mysql/mysqld.pid
log-error=/var/log/mysql/error.log
lower_case_table_names = 1
autocommit = 1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=INNODB
default-time_size='+8:00'
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
skip-character-set-client-handshake
innodb_buffer_pool_size=2G
# 键缓存大小
key_buffer_size=64M
# 允许的最大数据包大小
max_allowed_packet=16M
# 表缓存
table_open_cache=6000
# 排序缓存大小
sort_buffer_size=16M
# 网络缓冲区长度
net_buffer_length=32K
# 读取缓冲区大小
read_buffer_size=16M
# 随机读取缓冲区大小
read_rnd_buffer_size=1024K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=265M
# 线程缓存大小
thread_cache_size=512
# 临时表大小
tmp_table_size=512M
# 启用显式默认时间戳
explicit_defaults_for_timestamp=ON
# 最大连接数
max_connections=3000
# 连接错误最大数量
max_connect_errors=100
# 打开文件限制
open_files_limit=65535
3.redis配置文件
#基础服务配置
# 以守护进程(后台)模式运行 Redis。在 Docker 中部署时需设置为 no,否则容器会立即退出。
daemonize no
#日志配置
logfile /var/log/redis/redis.log
loglevel debug
pidfile /var/run/redis.pid
# RDB 快照和 AOF 文件的存储路径,需确保该目录已挂载到宿主机(如 /docker/redis 目录)。
dir /data
#网络与访问控制
# 允许 Redis 监听所有网络接口(即所有 IP 地址)的连接,生产环境建议绑定内网 IP,避免直接暴露在公网。
bind 0.0.0.0
#关闭保护模式
protected-mode no
# 设置客户端连接密码,需通过 AUTH 密码 认证后才能操作。生产环境必须设置强密码,避免使用简单密码。
requirepass redis123
# Redis 服务监听的端口号,默认是 6379。可修改为其他端口以增强安全性。
port 6379
# 客户端连接空闲超过300秒(即5分钟)后自动断开,释放资源。
timeout 300
# 限制Redis同时支持的最大客户端连接数为 10000。超过此值会拒绝新连接。
maxclients 10000
# 持久化
# 在 900 秒(15 分钟)内,如果至少发生 1 次数据修改,则触发一次 RDB 快照保存。
save 900 1
# 在 300 秒(5 分钟)内,如果至少发生 10 次数据修改,则触发一次 RDB 快照保存。
save 300 10
# 在 60 秒(1 分钟)内,如果至少发生 10000 次数据修改,则触发一次 RDB 快照保存。
save 60 10000
# RDB 快照的文件名,默认为 dump.rdb。
dbfilename dump.rdb
rdbcompression yes
# 启用 AOF(Append-Only File)持久化模式,记录所有写操作。
appendonly yes
# AOF 日志同步策略:每秒同步一次磁盘,平衡性能与数据安全性(可选 always 或 no)。
appendfsync everysec
# 安全
# 禁用 FLUSHDB 命令(清空当前数据库),防止误操作或恶意攻击。
rename-command FLUSHDB ""
# 将 FLUSHALL 命令重命名为FLUSHALL_ENCRYPTED,需使用新名称执行该命令。
rename-command FLUSHALL "FLUSHALL_ENCRYPTED"
# 内存管理
# 限制 Redis 最大可用内存为 4GB,超出限制时根据策略淘汰数据。
maxmemory 4gb
# 当内存不足时,优先淘汰最近最少使用(LRU)的键(仅淘汰有过期时间的键)。allkeys-lru:所有键参与淘汰。volatile-ttl:淘汰剩余生存时间(TTL)最短的键。noeviction:禁止淘汰数据,直接报错(慎用)。
maxmemory-policy volatile-lru