docker-compose快速启动mysql和redis(提供外部客户端可连接)

适用于个人开发快速部署中间件

先定义一下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
// An highlighted block

# 是否以后台进程运行
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"错误信息。但INFOSLAVEOF命令除外。
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的客户端工具进行连接开发…
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值