跳到主要内容

定制redis容器镜像

前言

应开发需求,定制封装redis的docker镜像,需要通过环境变量修改redis的密码。

redis.conf

port 6379
requirepass REDIS_PASSWD
daemonize no
protected-mode yes
io-threads-do-reads yes

redis.conf文件配置参数说明。更多参数可参考 官方文档

参数说明
portredis-server的监听端口
requirepassredis的连接密码
daemonize是否以后台模式启动,在docker中必须为no
protected-mode是否开启保护模式
io-threads-do-reads是否开启io多线程

docker-entrypoint.sh

#!/bin/bash

if [ -n "$REDIS_PASSWD" ]; then
sed -i "s/REDIS_PASSWD/$REDIS_PASSWD/g" /etc/redis.conf
fi

/usr/local/bin/redis-server /etc/redis.conf

Dockerfile

FROM redis:7.0.8
LABEL version="7.0.8.1"
LABEL description="add redis password"
ADD docker-entrypoint.sh /
ADD redis.conf /etc/
ENV REDIS_PASSWD="123456"
CMD ["/docker-entrypoint.sh"]

构建

docker build -t redis:7.0.8.1 .

运行示例

version: "3"
services:
redis:
image: redis:7.0.8.1
container_name: redis
ports:
- 6379:6379
environment:
- REDIS_PASSWD="654321"

使用docker-compose up -d命令创建容器并运行,用客户端带上密码访问测试。