一文教你如何构建 Redis Docker镜像

运维 系统运维 Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

简介

由于版本的需求,需要编译使用新版本的redis。

准备基础镜像

  1. docker import https://mirrors.aliyun.com/alpine/v3.15/releases/x86_64/alpine-minirootfs-3.15.0-x86_64.tar.gz alpine:3.15.0 
构建 redis docker镜像

启动文件

  1. #!/bin/sh 
  2. set -e 
  3.  
  4. port=6379 
  5. if [ "$PORT" != "" ] ; then 
  6.     port=$PORT 
  7. fi 
  8. data_dir=/data/redis/data 
  9. if [ "$DATADIR" != "" ] ; then 
  10.     data_dir=$DATADIR 
  11. fi 
  12. mkdir -p $data_dir 
  13. password="" 
  14. if [ "$PASSWORD" != "" ] ; then 
  15.     password=$PASSWORD 
  16. fi 
  17. maxmemory=0 
  18. if [ "$MAXMEMORY" != "" ] ; then 
  19.     maxmemory=$MAXMEMORY 
  20. fi 
  21. protected_mode="no" 
  22. if [ "$PROTECTEDMODE" != "" ] ; then 
  23.     protected_mode=$PROTECTEDMODE 
  24. fi 
  25. if [[ "$PASSWORD" == "" && "$protected_mode" == "yes" ]]; then 
  26.     echo "protected-mode need password!!!!" 
  27.     exit 1 
  28. fi 
  29. cat >/etc/redis.conf <<EOF 
  30. bind 0.0.0.0 
  31. protected-mode ${protected_mode} 
  32. port ${port} 
  33. daemonize no 
  34. pidfile ${data_dir}/redis_${port}.pid 
  35. loglevel notice 
  36. logfile "${data_dir}/${port}.log" 
  37. databases 16 
  38. dbfilename dump_${port}.rdb 
  39. dir ${data_dir} 
  40. maxmemory $maxmemory 
  41. appendonly yes 
  42. appendfilename "appendonly_${port}.aof" 
  43. appendfsync everysec 
  44. requirepass "${password}" 
  45. EOF 
  46. /usr/local/bin/redis-server /etc/redis.conf 

Dockerfile

构建 redis docker镜像
  1. #!/bin/bash 
  2.  
  3. cat >Dockerfile <<EOF 
  4. From alpine:3.15.0 
  5. ADD https://download.redis.io/releases/redis-6.2.6.tar.gz / 
  6. RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add make gcc g++ linux-headers tar && tar zxvf redis-6.2.6.tar.gz && cd redis-6.2.6 && make && make install && apk del make gcc g++ linux-headers tar && rm -rfv /redis-6.2.6 /redis-6.2.6.tar.gz 
  7. ADD entrypoint.sh / 
  8. ENTRYPOINT [ "/bin/sh","/entrypoint.sh" ] 
  9. EOF 
  10.  
  11. docker build -t redis:v6.2.6 . 

使用

  1. docker run -itd -e PASSWORD=123 -e PORT=7000 -e MAXMEMORY=5gb -e PROMTECTEDMODE=yes -e DATADIR=/data/redis redis:v6.2.6 

支持变量:

  • PASSWORD:密码
  • PORT:端口
  • MAXMEMORY:最大内存
  • PROMTECTEDMODE:保护模式(默认是:no)
  • DATADIR:数据目录

 

责任编辑:姜华 来源: 今日头条
相关推荐

2023-07-31 21:56:54

哨兵系统redis

2019-07-23 07:30:16

2023-12-27 07:40:43

HTTP服务器负载均衡

2022-02-20 09:56:28

TCPIP网络协议

2022-09-05 07:32:46

mock数据Stream

2023-05-11 08:26:56

2021-01-15 13:18:39

数据模型领域模型代码

2020-03-23 10:06:05

工具代码开发

2020-12-22 10:02:53

ZabbixMySQL数据库

2021-08-10 05:49:10

网络协议C语言Linux操作

2021-01-27 09:34:51

Visual C++Dev C++codelite

2022-03-24 08:51:48

Redis互联网NoSQL

2023-10-30 11:01:37

Buildpack云原生

2022-04-28 06:05:10

无线中继Mesh路由器

2022-08-26 07:02:57

Python工具分割

2022-12-20 07:39:46

2021-01-05 15:20:04

深度学习优化器人工智能

2021-01-07 10:04:24

容器虚拟机测试

2017-09-04 14:46:10

分布式事务问题
点赞
收藏

51CTO技术栈公众号