在前面一遍随笔,配置的是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

成功启动。

最新文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT
  2. 帆软报表FineReport SQLServer数据库连接失败常见解决方案
  3. vb.net 控件(包括字体)随窗体按比例缩放
  4. Activity(活动)-再讲
  5. Python单元测试——unittest
  6. android学习笔记45——android的数据存储和IO
  7. JAVA&#183;多线程:创建线程的两种方式
  8. Keil的使用方法 - 常用功能(一)
  9. E-R图向关系模式的转换
  10. IOS下双击背景, touchmove, 阻止页面背景scroll.
  11. fastDFS同步问题讨论
  12. jsoup分解HTML DOM
  13. Servlet知识点
  14. 20190211 模拟训练 A. 大猫咪
  15. 克隆虚拟机+Linux互相登录+秘钥认证(四)
  16. 你不知道的 #include
  17. tcp/ip 三次握手和4次挥手
  18. log 的 debug()、 error()、 info()方法
  19. BootLoader简介(借鉴)
  20. Thymeleaf 模板引擎技术

热门文章

  1. Java 并发 —— Thread、Executor、线程池
  2. openstack cluster 封装
  3. 函数bsxfun,两个数组间元素逐个计算的二值操作
  4. Permutations II 典型去重
  5. MySQL 操作语句
  6. bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】
  7. SP1043 GSS1 - Can you answer these queries I(猫树)
  8. react key的作用
  9. [USACO09NOV]灯Lights
  10. 折半枚举(双向搜索)poj27854 Values whose Sum is 0