适用于个人开发快速部署中间件
先定义一下docker-compose.yaml 文件,在当前目下可用一下命令
启动命令 docker-compose up -d
关闭命令 docker-compose down
version : '2.2'
services :
#redis容器 - Redis container
redis :
image : redis: 6.2 .5
container_name : redis
ports :
- 36379 : 6379
environment :
# 时区上海 - Time zone Shanghai ( Change if needed)
TZ : Asia/ Shanghai
volumes :
# 数据文件 - data files
- . / data/ redis/ data: / data: rw
- # 注意这里需要先 / usr/ local/ app/ redis/ conf 新建redis. conf文件 redis. conf文件可从http: / / www. redis. cn/ 下载
- . / data/ redis/ data/ redis. conf: / usr/ local/ etc/ redis/ redis. conf
- . / data/ redis/ data/ logs: / logs
command : "redis-server /usr/local/etc/redis/redis.conf --requirepass G62m50oigInC30sf --appendonly yes"
privileged : true
restart : always
networks :
- myweb
mysql :
image : mysql/ mysql- server: 8.0 .28
container_name : mysql
environment :
# 时区上海 - Time zone Shanghai ( Change if needed)
TZ : Asia/ Shanghai
# root 密码 - root password
MYSQL_ROOT_PASSWORD : PXDN93VRKUm8TeE7
ports :
- 3305 : 3306
volumes :
# 数据挂载 - Data mounting
- . / data/ mysql/ data: / var / lib/ mysql
# 日志
command :
# 将mysql8. 0 默认密码策略 修改为 原先 策略 ( mysql8. 0 对其默认策略做了更改 会导致密码无法匹配)
# Modify the Mysql 8.0 default password strategy to the original strategy ( MySQL8. 0 to change its default strategy will cause the password to be unable to match)
-- default - authentication- plugin= mysql_native_password
-- character- set- server= utf8mb4
-- collation- server= utf8mb4_general_ci
-- explicit_defaults_for_timestamp= true
-- lower_case_table_names= 1
privileged : true
restart : always
networks :
- myweb
networks :
myweb :
driver : bridge
启动之后项目里会有这样的文件夹
redis 的客户端连接,需要根据将127.0.0.1 改成0.0.0.0 即可外部客户端连接
可参考我写的redis.conf
# 是否以后台进程运行
daemonize yes
# pid文件位置
pidfile / var / run/ redis/ redis- server. pid
# 监听端口
port 6379
# 绑定地址,如外网需要连接,设置0.0 .0 .0
bind 0.0 .0 .0
# 连接超时时间,单位秒
timeout 300
##日志级别,分别有:
# debug :适用于开发和测试
# verbose :更详细信息
# notice :适用于生产环境
# warning :只记录警告或错误信息
loglevel notice
# 日志文件位置
logfile / var / log/ redis/ redis- server. log
# 是否将日志输出到系统日志
syslog- enabled no
# 设置数据库数量,默认数据库为0
databases 16
############### 快照方式 ###############
# 在900s(15m)之后,至少有1 个key发生变化,则快照
save 900 1
# 在300s(5m)之后,至少有10 个key发生变化,则快照
save 300 10
# 在60s(1m)之后,至少有1000 个key发生变化,则快照
save 60 10000
# dump时是否压缩数据
rdbcompression yes
# 数据库(dump. rdb)文件存放目录
dir / var / lib/ redis
############### 主从复制 ###############
#主从复制使用,用于本机redis作为slave去连接主redis
slaveof < masterip> < masterport>
#当master设置密码认证,slave用此选项指定master认证密码
masterauth < master- password>
#当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress" 错误信息。但INFO 和SLAVEOF 命令除外。
slave- serve- stale- data yes
############### 安全 ###############
#配置redis连接认证密码
requirepass G62m50oigInC30sf
############### 限制 ###############
#设置最大连接数,0 为不限制
maxclients 128
##内存清理策略,如果达到此值,将采取以下动作:
# volatile- lru :默认策略,只对设置过期时间的key进行LRU 算法删除
# allkeys- lru :删除不经常使用的key
# volatile- random :随机删除即将过期的key
# allkeys- random :随机删除一个key
# volatile- ttl :删除即将过期的key
# noeviction :不过期,写操作返回报错
maxmemory < bytes>
# 如果达到maxmemory值,采用此策略
maxmemory- policy volatile- lru
# 默认随机选择3 个key,从中淘汰最不经常用的
maxmemory- samples 3
############### 附加模式 ###############
# AOF 持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
appendonly no
# 指定更新日志文件名
appendfilename appendonly. aof
## AOF 持久化三种同步策略:
# appendfsync always #每次有数据发生变化时都会写入appendonly. aof
# appendfsync everysec #默认方式,每秒同步一次到appendonly. aof
# appendfsync no #不同步,数据不会持久化
# 当AOF 日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF 是否自动重写AOF 日志文件。
no- appendfsync- on- rewrite no
############### 虚拟内存 ###############
# 是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
vm- enabled no
# 虚拟内存文件位置
vm- swap- file / var / lib/ redis/ redis. swap
# redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
vm- max- memory 0
# 每个页面的大小为32 字节
vm- page- size 32
# 设置swap文件中页面数量
vm- pages 134217728
# 访问swap文件的线程数
vm- max- threads 4
############### 高级配置 ###############
# 哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
hash- max- zipmap- entries 512
# 哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
hash- max- zipmap- value 64
# list数据类型多少节点以下会采用去指针的紧凑存储格式
list- max- ziplist- entries 512
# list数据类型节点值大小小于多少字节会采用紧凑存储格式
list- max- ziplist- value 64
# set 数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
set- max- intset- entries 512
# 是否激活重置哈希
activerehashing yes
mysql外部客户端连接,先进入该容器,然后密码登陆, 修改用户名root,最后刷新
docker container ls
docker exec -it 容器id bash
mysql -u root -p
use mysql;
update user set Host = '%' where Host = 'localhost' and User='root';
flush privileges;
最后,将云服务器的安全组放开相对应的端口(本文是3305、36379),用宝塔的需要在安全里把端口放行其他的防火墙同理。
到此,Linux上的mysql、redis的快速搭建已经完成,可使用Windows的客户端工具进行连接开发…