云原生——使用docker构建一个redis镜像

本文主要讲解如何基于redis官方镜像构建一个redis镜像,构建后的镜像支持自定义redis配置文件,并在镜像中加入了curl和bash基础命令。最后,还会简要讲解使用该镜像。

Dockerfile:

代码语言:javascript
复制
FROM redis:7.0.15-alpine3.20
# install tools
RUN apk add curl --no-cache &&\
    apk add bash --no-cache

COPY redis.conf /usr/local/etc/redis/redis.conf

CMD [ "redis-server", "/usr/local/etc/redis/redis.conf"]

redis.conf:

代码语言:javascript
复制
# Redis 配置文件示例

################################## INCLUDES ###################################

如果你的 Redis 实例使用 include 配置来引入其他文件,请确保这些文件存在

include /path/to/local.conf

include /path/to/other.conf

################################## MODULES ####################################

如果你在编译时加载了模块,请在这里引入它们

################################## NETWORK ####################################

绑定的 IP 地址

bind 127.0.0.1

端口号

port 6379

TCP-backlog

tcp-backlog 511

网络超时时间(秒)

timeout 0

日志级别

loglevel notice

通信协议(tcp 或者 unix)

默认值为 tcp

unixsocket /tmp/redis.sock

unixsocketperm 700

################################# GENERAL #####################################

密码认证

requirepass foobared

服务器标识(用于统计)

servername redis_server_1

守护进程模式

daemonize no

数据目录

dir /var/lib/redis

RDB 文件名

dbfilename dump.rdb

持久化策略

save 900 1
save 300 10
save 60 10000

是否开启 AOF

appendonly yes

AOF 文件名

appendfilename "appendonly.aof"

AOF 同步策略

appendfsync everysec

AOF 自动重写缩减

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

是否开启集群模式

cluster-enabled no

慢查询日志阈值(单位微秒)

slowlog-log-slower-than 10000

客户端输出缓冲区长度

client-output-buffer-limit normal 0 0 0

设置最大客户端连接数

maxclients 10000

设置允许的最大内存使用量

maxmemory 4gb

设置内存使用达到最大时的处理策略

maxmemory-policy volatile-lru

设置是否开启了压缩

rdbcompression yes

设置是否开启了哨兵

sentinel false

构建镜像:

代码语言:javascript
复制
docker build -t redis:v7.0.15 . -f Dockerfile 

运行:

代码语言:javascript
复制
docker run --name myredis7  -p 6379:6379 -d redis:v7.0.15 

查看容器:

代码语言:javascript
复制
docker ps |grep myredis

进入容器:

代码语言:javascript
复制
 docker exec -it b8c8ba64955b bash

连接并使用redis:

代码语言:javascript
复制
redis-cli -h 127.0.0.1 -p 6379

redis官方镜像地址:

https://hub.docker.com/_/redis