一、完整目录结构
redis-docker/
├── docker-compose.yml # 核心编排文件
└── conf/
└── redis.conf # Redis自定义配置文件
二、redis.conf 配置文件(核心配置)
创建 conf/redis.conf,内容如下(包含密码、远程访问、持久化等关键配置):
# 允许所有IP访问(生产环境可改为指定IP)
bind 0.0.0.0
# 关闭保护模式(否则仅本地可访问)
protected-mode no
# 设置Redis密码(必填)
requirepass pptt123456
# 端口(容器内固定6379,外部映射可改)
port 6379
# 开启AOF持久化(避免数据丢失)
appendonly yes
# AOF文件同步策略(兼顾性能和数据安全)
appendfsync everysec
# 关闭RDB持久化(可选,若需保留可注释)
save ""
# 最大内存限制(根据服务器配置调整,示例1GB)
maxmemory 1gb
# 内存淘汰策略(内存满时删除最少使用的键)
maxmemory-policy allkeys-lru
# 日志级别
loglevel notice
# 日志文件(容器内路径)
logfile "/data/redis-server.log"
三、docker-compose.yml 编排文件
创建 docker-compose.yml,内容如下(包含容器编排、目录挂载、端口映射等):
version: '3.8' # Compose文件版本(兼容Docker 19.03+)
services:
redis:
image: redis:latest # Redis镜像版本(可改为指定版本如redis:7.2)
container_name: redis-server # 容器名称(自定义)
restart: always # 容器异常退出时自动重启
ports:
- "6379:6379" # 端口映射(主机端口:容器端口,生产可改主机端口如6380)
volumes:
# 挂载自定义配置文件到容器内默认配置路径
- ./conf/redis.conf:/etc/redis/redis.conf
# 挂载数据目录(持久化Redis数据和日志)
- redis-data:/data
command: redis-server /etc/redis/redis.conf # 启动命令(指定自定义配置文件)
environment:
- TZ=Asia/Shanghai # 设置容器时区(避免时间不一致)
# 资源限制(可选,根据服务器配置调整)
deploy:
resources:
limits:
cpus: '0.5' # 最多使用0.5个CPU核心
memory: 1.5G # 最多使用1.5GB内存
# 网络模式(默认bridge,无需修改)
networks:
- redis-network
# 数据卷(持久化Redis数据,避免容器删除后数据丢失)
volumes:
redis-data:
driver: local # 本地数据卷
# 自定义网络(隔离Redis容器网络)
networks:
redis-network:
driver: bridge
四、使用说明
1. 启动容器
进入 redis-docker 目录,执行以下命令:
# 后台启动容器(-d 表示后台运行)
docker-compose up -d
2. 验证密码是否生效
# 进入Redis容器
docker exec -it redis-server redis-cli
# 验证密码(输入后返回OK则生效)
127.0.0.1:6379> AUTH pptt123456
OK
# 测试写入数据
127.0.0.1:6379> SET test "hello redis"
OK
# 读取数据
127.0.0.1:6379> GET test
"hello redis"
3. 常用管理命令
# 查看容器状态
docker-compose ps
# 查看Redis日志
docker-compose logs redis
# 停止容器
docker-compose stop
# 重启容器
docker-compose restart
# 停止并删除容器(数据卷保留)
docker-compose down
# 停止并删除容器+数据卷(谨慎使用,数据会丢失)
docker-compose down -v
五、生产环境优化建议
- 修改主机映射端口(如
6380:6379),避免默认端口暴露; - 将
redis:latest改为固定版本(如redis:7.2),避免镜像更新导致兼容问题; - 限制
cpus和memory资源,根据服务器配置调整; - 生产环境建议将
bind 0.0.0.0改为指定业务服务器IP,提升安全性; - 定期备份
/var/lib/docker/volumes/redis-docker_redis-data/目录(数据卷实际路径)。