前提:拉取一个redis镜像,要知道版本号,我用的是5.0.4。这个很关键,涉及到之后使用的redis.conf,要使用相同版本的。redis.conf下载地址:http://download.redis.io/releases/
先拿到redis.conf 对应版本的文件(在官网地址直接下载解压即可)
主节点docker-compose文件
version: "3"
services:
redis:
container_name: my-redis-container
image: redis:latest #image 代表镜像名称;(用最新的版本)
environment:
- TZ=Asia/Shanghai
ports: #ports 将容器内的端口映射到容器外;
- 6379:6379
volumes:
#数据挂载 :冒号前面是宿主机的路径:冒号后面数容器的路径 这句话的意思就是把容器里面的redis.conf
#的文件映射到宿主机./volume/conf/redis.conf 这个redis.conf 文件下面
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
- "./volume/conf/redis.conf:/usr/local/etc/redis/redis.conf"
- "./volume/data:/data"
command: redis-server --port 6379 --requirepass 你的密码 --appendonly yes # 这样配置密码生效了
restart: always
说明:
- volumes 代表共享目录或文件,冒号前为宿主机目录,冒号后为容器内目录。举例:- ./data:/data 意为将当前目录共享到容器内的 /data 目录,相当于做了一个软连接。
注:共享目录或文件时如果宿主机或容器内不存在 docker 会自动帮你创建。
在执行docker-compose up 这个命令之前 我们最好先对挂载的路径做个准备工作 先在volume的目录下先新建redis.conf 文件 所以在执行docker-compose up 执行在yaml 文件时会把redis.conf创建成一个文件夹
对redis.conf文件进行修改(或者直接编写redis.conf文件)
redis.conf文件直接手写
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data
appendonly yes
appendfsync everysec
requirepass 你的密码
我就修改了四处
requirepass 123456 登入密码 (第一处)
daemonize yes # 以守护进程方式启动,使用本启动方式,redis将以服务的形式存在(第二处)
daemonize no ## 若使用开机启动,生成pid,该项必须设置为诶yes,否则redis将不能够正常执行开机启动(systemctl start redis,执行后一直卡着,直到超时)
#bind 127.0.0.1 ##注释掉或者0.0.0.0,允许所有其他ip访问,真实使用最好坐下限制,只允许某些主机访问 (第三处)
appendonly yes#redis持久化 默认是no (第四处)
创建并启动容器
直接用docker-compose up
up选项启动容器,-d选项以守护模式运行,镜像如果没有,docker会先拉取镜像,有则直接创建并启动容器,注意文件运行前不能有与其同名容器,还应该注意防火墙设置
END
使用docker ps 命令查看是否运行成功