手写redis的docker文件,通过docker-compose配置redis
在前面一遍随笔,配置的是mysql主从的docker-compose配置。今天我们来学习配置编排容器redis。
准备环境:
docker 18.06.1-ce
docker-compose 1.23.0-rc3
redis最新版
开始:
1、首先我们创建下docker文件的目录,并新建Dockerfile、redis-entrypoint.sh、redis.conf
如下图:

Dockerfile文件内容如下:
FROM redis:latest #指定启动容器的镜像 MAINTAINER cc <cc@qq.com> #署名 RUN mkdir -p /redis/log; #在容器里运行创建目录/redis/log WORKDIR /redis #设置工作目录为/redis COPY redis.conf . #拷贝redis.conf配置文件到工作目录(这里其实就是在Dockerfile同级下的redis.conf文件拷贝到容器内当前工作目录,也就是/redis目录)
COPY redis-entrypoint.sh /usr/local/bin/ #拷贝redis.entrypoint.sh 到容器内/usr/local/bin/目录下 RUN chown redis:redis /redis/* && \ #给容器内的/redis/*设置归属用户,并设置redis.entrypoint.sh文件的可执行权限
chmod +x /usr/local/bin/redis-entrypoint.sh EXPOSE 6379 #暴露端口6379 CMD ["redis-entrypoint.sh"] #执行redis-entrypoint.sh文件
redis.conf内容如下:
#修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。
daemonize no
#可修改默认监听端口
port $REDIS_PORT
#修改生成默认日志文件位置
logfile "/redis/log/redis.log"
#配置持久化文件存放位置
dir "/tmp"
requirepass $REDIS_PASSWORD
redis-entrypoint.sh内容如下:
#!/usr/bin/env sh sed -i "s/\$REDIS_PORT/$REDIS_PORT/g" /redis/redis.conf #声明参数,为了docker-compose里面可以动态配置
sed -i "s/\$REDIS_PASSWORD/$REDIS_PASSWORD/g" /redis/redis.conf #声明参数 redis-server /redis/redis.conf
到这步,我们就以及把redis的所有配置都准备好了,接下来在Dockerfile的目录,执行脚本,生成redis镜像文件
2、生成docker 镜像文件
docker build -t iqeq/redis:1.0 . # 生成了一个iqeq/redis:1.0的镜像文件
3、编排docker-compose文件
version: '3' #版本号
services:
redis:
container_name: redis_container #容器名,自定义
image: iqeq/redis:1.0 #刚才生成的镜像名
environment: #环境参数:配置刚才shell启动脚本里面声明的2个参数
- REDIS_PORT=6379
- REDIS_PASSWORD=密码
ports: #暴露容器内部端口6379并映射到外部也为6379
- "6379:6379"
restart: unless-stopped #启动方式
volumes:
- $PWD/redis/data:/data #文件绑定挂载:$PWD表示当前目录,然后这里就是当前目录下的/redis/data子目录,挂载为容器内的/data目录
- $PWD/redis/log:/redis/log
然后保存文件为docker-compose.yml
4、查看下我们整个工作的目录结构

写的不是很好,制作的时候,特别要注意的目录要相对应的配对哈。
最后:
我们在docker-compose.yml的同级目录下,执行以下脚本:
docker-compose up -d
成功启动。

手写redis的docker文件,通过docker-compose配置redis的更多相关文章
- IDEA中mybatis插件自动生成手写sql的xml文件
上图: 选择这个安装,然后重启IDEA,ok.
- 本地测试读取redis和普通文件缓存的速度,redis慢一倍?
重新测试了,换成了Linux服务器,php5.6,512内存.连续读取1千次不同的文件(每个文件41KB),redis也是1千个不同的key,文件缓存还是比redis快! 但是,但是,后来我换成连续读 ...
- 【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...
- canvas画布实现手写签名效果
最近项目中涉及到移动端手写签名的功能需求,将实现代码记录于此,供小伙伴们参考指摘哦~ HTML代码: <!--手写区--> <div class="mSign_signMa ...
- 自己手写一个SpringMVC 框架
一.了解SpringMVC运行流程及九大组件 1.SpringMVC 的运行流程 · 用户发送请求至前端控制器DispatcherServlet · DispatcherServlet收到请求调用 ...
- Redis 数据恢复方法,redis-port 工具将自建 redis 的 rdb文件同步到云数据库
1. Redis 恢复的机制 如果只配置 AOF ,重启时加载 AOF 文件恢复数据: 如果同时配置了 RDB 和 AOF ,启动是只加载 AOF 文件恢复数据: 如果只配置 RDB,启动是将加载 d ...
- 前端进阶之认识与手写compose方法
目录 前言:为什么要学习这个方法 compose简介 compose的实现 最容易理解的实现方式 手写javascript中reduce方法 redux中compose的实现 参考文章 最后 前言:为 ...
- Linux上给php配置redis扩展
说明,在项目开发中难免会遇到redis中,那我应该如何配置redis这样的一个扩展呢,看下面流程: 一.安装Redis PHP在安装redis扩展时,难免要看一下官网下载安装流程,链接如下: http ...
- Window安装配置Redis
一.下载windows版本的Redis github下载地址:https://github.com/MSOpenTech/redis/tags 二.安装启动Redis Redis 支持 32 位和 6 ...
随机推荐
- H264 层次构成[2]
H264层次构成 H264标准是由JVT(Joint Video Team,视频联合工作组)组织提出的新一代数字视频编码标准.JVT于2001年12月在泰国Pattaya成立.它由ITU-T的VCEG ...
- 【Codevs 4672】辛苦的老园丁
http://codevs.cn/problem/4672/ 那个一看这不是(最大独立集)的最大权值和,类似 反图→ 最大团 NP问题 搜索解决 改一下模板即可 参考最大独立集 Maximum C ...
- 【Codeforces】665E Beautiful Subarrays
E. Beautiful Subarrays time limit per test: 3 seconds memory limit per test: 512 megabytes input: st ...
- bzoj1597 [Usaco2008 Mar]土地购买——斜率优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 就是斜率优化水题... 然而WA了十几遍,正负号处理真让人心累... 还是该负就负,别 ...
- 17年day2
/* 嗯,明天就出发了. 嗯,终于快要结束了. 考试日常挂T1 今天晚上老师们请我们吃水饺,还有一个大蛋糕. 虽然没怎么吃蛋糕23333 还好我的水饺是白菜馅的~~~ 晚上学哥学姐们发视频送祝福,谢谢 ...
- P1128 [HNOI2001]求正整数
传送门 rqy是我们的红太阳没有它我们就会死 可以考虑dp,设\(dp[i][j]\)表示只包含前\(j\)个质数的数中,因子个数为\(i\)的数的最小值是多少,那么有转移方程 \[f[i][j]=m ...
- 慕课网4-2 编程练习:jQuery祖先后代选择器小案例
4-2 编程练习 结合所学的祖先后代选择器,实现如下图所示效果 任务 (1)使用祖先后代选择器将第二段文字背景色变成红色 (2)使用jQuery的.css()方法设置样式,语法css('属性 '属性值 ...
- mysql机制总结
Innodb和myisam最大的不同就是 innodb支持事物 采用了行锁 myisam 采用了表锁 默认就使用了表锁 表锁:速度快 并发小 发生锁冲突高 开销小 行锁:速度慢 并发高 发生锁冲突低 ...
- javascript实现继承的4种方法,以及它们的优缺点
1. 原型链继承(有缺陷): 缺陷1:切断了Zi.prototype.constructor与Zi的关系 缺陷2:原型链上的引用类型的数据会被所有实例共享 2. 构造函数继承(有缺陷): 缺陷1:Fu ...
- c语言 error C4996: 'strupr': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name
问题: 在使用visual studio 2013,进行调试执行代码时,出现如下错误: error C4996: 'strupr': The POSIX name for this item is d ...