引言:作为一名专业的资深开发,本地一定拥有了不少开源项目以供学习,每次都要去启动 mysql 数据库跟 redis 服务器,这种操作1.挺烦的,挺费时间,每次都要启动命令来一次;2.占用自己电脑的资源,本来服务开多了电脑就累,这些公共的东西太费电脑了。因此能快捷的把这些服务搭在一些便宜的云服务器上,是我喜欢的方式,趁着618、双 11 这些节去薅一薅云服务商的羊毛搞一台,把这些中间件部署上去,本地配置文件一修改只要负责启动项目就行了,这种感觉太棒了!
那么速搭首选 docker,实在是太太太快了!
因此[docker]这个系列的 yml 就是为速搭准备的,配置文件不是最优,但最快,基本满足常规使用,我会持续优化更新…
- 安装 docker -> https://www.runoob.com/docker/centos-docker-install.html
- 安装 docker-compose -> https://www.runoob.com/docker/docker-compose.html
mkdir -p /docker
新建 docker-compose-redis.yml 后面跟着做就行了
/docker/docker-compose-redis.yml
version: '3'
services:
redis:
image: redis:6.2.7
container_name: redis
ports:
- "6379:6379"
environment:
# 时区上海
TZ: Asia/Shanghai
volumes:
# 配置文件
- /docker/redis/conf:/redis/config
# 数据文件
- /docker/redis/data/:/redis/data/
command: "redis-server /redis/config/redis.conf"
privileged: true
network_mode: "host"
新建容器挂载目录以及赋予 redis 数据目录(data)写入权限
mkdir -p /docker/redis/data
mkdir -p /docker/redis/conf
cd /docker/redis;chmod 777 data
/docker/redis/conf/redis.conf
注意修改 redis 密码 requirepass 的值,免密连接的直接注释
# 设置允许所有地址访问
bind 0.0.0.0
# redis 密码
requirepass password
# key 监听器配置
# notify-keyspace-events Ex
# 配置持久化文件存储路径
dir /redis/data
# 配置rdb
# 15分钟内有至少1个key被更改则进行快照
save 900 1
# 5分钟内有至少10个key被更改则进行快照
save 300 10
# 1分钟内有至少10000个key被更改则进行快照
save 60 10000
# 开启压缩
rdbcompression yes
# rdb文件名 用默认的即可
dbfilename dump.rdb
# 开启aof
appendonly yes
# 文件名
appendfilename "appendonly.aof"
# 持久化策略,no:不同步,everysec:每秒一次,always:总是同步,速度比较慢
# appendfsync always
appendfsync everysec
# appendfsync no
docker-compose -f docker-compose-redis.yml up -d
启动(先等等,先解决下面 2 个问题的设置再行启动一步到位)
遇到的问题:
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
意思是:TCP backlog设置值,511没有成功,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128.
# 临时解决方法
echo 511 > /proc/sys/net/core/somaxconn
# 永久解决方法(根据内存定义值,这里是 2g=2048)
echo net.core.somaxconn=2048 >> /etc/sysctl.conf
sysctl -p
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
意思是:overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败。建议在文件 /etc/sysctl.conf 中将overcommit_memory修改为1。
具体 0、1、2 的含义
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存
# 如果内存情况比较紧张的话会告警,需要设定内核参数:内存分配策略 1
# 方法一(建议):
echo vm.overcommit_memory=1 >> /etc/sysctl.conf
sysctl -p
# 方法二:
sysctl vm.overcommit_memory=1
mysql 速搭传送门:https://blog.csdn.net/weixin_44462681/article/details/139410329