前言:本文将介绍如何使用 Docker Compose 部署单机 Redis,并使用自定义配置文件。在开始之前,请确保你已经安装了 Docker 和 Docker Compose。你可以参考我之前的文章获取安装指南。
文章目录
1. 下载并修改配置文件
1.1 为什么需要自定义 Redis 配置文件?
默认情况下,通过 Docker 部署的 Redis 容器会使用其内部的默认配置。然而,这个默认配置通常不包含生产环境所需的关键设置,例如密码保护、持久化策略等。因此,为了提高 Redis 实例的安全性和数据可靠性,我们需要使用自定义的配置文件。
1.2 下载配置文件
访问 Redis 官方下载页面获取不同版本的配置文件:
http://download.redis.io/releases/
找到对应的版本下载,此处以redis7.0.12为例
下载文件后解压该文件后找到redis.config文件
1.3 修改配置文件
首先创建配置文件目录、持久化数据目录
# 创建配置文件目录、持久化数据目录
mkdir -p /data/redis/{conf,data}
将redis.config
文件放到/data/redis/conf
目录下
我们需要修改一些redis的默认配置,比如关闭保护模式,允许远程连接、开启AOF持久化、设置允许访问的ip地址、redis的密码等
1.3.1 绑定 IP 地址(bind
)
找到 bind 127.0.0.1 -::1
这一行,将其修改为允许来自任何 IP 地址的连接0.0.0.0
:
注意: 在生产环境中,为了安全起见,建议将 bind
设置为允许连接的特定 IP 地址,而不是 0.0.0.0
。
1.3.2 关闭保护模式,允许远程连接(protected-mode
)
找到 protected-mode yes
这一行,将其修改为 no
以允许远程连接:
警告: 关闭保护模式会使你的 Redis 实例暴露在公网上,如果未设置密码,将存在安全风险。请务必设置强密码。
1.3.3 开启AOF持久化(appendonly
)
找到 appendonly no
这一行,将其修改为 yes
以启用 AOF(Append Only File)持久化,确保数据不会丢失:
1.3.4 requirepass设置redis密码
找到被注释掉的 # requirepass foobared
这一行,取消注释并将 foobared
替换为你自己的强密码:
取消注释,设置密码
2. 编写docker-compose文件
我们在 /data/redis/
目录下创建一个 docker-compose.yaml
文件来定义 Redis 服务的配置。
vim /data/redis/docker-compose.yaml
将以下配置粘贴到文件中并保存:
version: '3'
services:
redis: # 服务名称
image: redis:7.0.12 # redis镜像版本
container_name: redis # 容器名称
ports:
- 9736:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器
volumes:
- /data/redis/conf/redis.conf:/etc/redis/redis.conf # 映射配置文件目录,宿主机:容器
- /data/redis/data:/data # 映射数据目录,宿主机:容器
restart: always # 容器开机自启
privileged: true # 获取宿主机root权限
command: ["redis-server","/etc/redis/redis.conf"] # 指定配置文件启动redis-server进程
配置说明:
ports
: 将宿主机的9736
端口映射到容器内部 Redis 默认的6379
端口。选择9736
而不是默认的6379
可以降低被自动化扫描的风险。volumes
:/data/redis/conf/redis.conf:/etc/redis/redis.conf
: 将宿主机上的配置文件目录挂载到容器内的/etc/redis/
目录,并指定使用该配置文件启动 Redis 服务。容器内部并没有默认的**/etc/redis/redis.conf**
文件,而是通过这个映射来加载我们自定义的配置。/data/redis/data:/data
: 将宿主机上的数据目录挂载到容器内的/data
目录,用于持久化 Redis 数据。
command
: 指定容器启动时执行的命令,告诉redis-server
使用我们挂载到容器内的/etc/redis/redis.conf
文件作为其配置文件。
3. 启动
在包含 docker-compose.yaml
文件的 /data/redis/
目录下,运行以下命令来启动 Redis 服务:
docker-compose -up -d
执行此命令后,Docker Compose 将会拉取 Redis 镜像(如果本地不存在),创建并启动名为 redis
的容器,并按照我们在 docker-compose.yaml
文件中定义的配置运行。
你可以使用以下命令来查看容器的运行状态:
docker ps
可以看到名为 redis
的容器正在运行,并且宿主机的 9736
端口已经映射到容器的 6379
端口。
总结
通过本文,你已经学会了使用 Docker Compose 部署单机 Redis,并配置了自定义的 redis.conf 文件,包括设置监听 IP、关闭保护模式、开启 AOF 持久化以及设置连接密码。