文章看了一大堆,但都是直接从各种地方直接拉master,slave镜像,没有交代这些镜像如何构建出来的

好把,我这篇就讲讲这些master,slave镜像如何做成.

先得找到一个标准的redis镜像,比如docker pull index.tenxcloud.com/docker_library/redis:3.0(镜像我没验证过,我是拿的公司的标准映像尝试的)

然后从镜像里面把redis.conf拷贝出来。

在机器上构建一个目录master:

里面包含Dockerfile,redis-master.conf,run.sh

redis-master.conf和拷贝出来的redis.conf一致,除了一处修改

protected-mode no

Dockerfile为

FROM index.tenxcloud.com/docker_library/redis:3.0

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

COPY run.sh /run.sh

CMD [ "/run.sh" ]

run.sh脚本为

redis-server /usr/local/etc/redis/redis.conf --protected-mode no

通过下面构建出来master

docker build -t ericnie/redis-master:3.0  .

 

同样建立一个redis-slave目录,和master类似,有几处不同,redis-slave.conf配置,打开slaveof

slaveof %master-ip% %master-port% 

run.sh为

sed -i "s/%master-ip%/${REDIS_MASTER_IP}/" /usr/local/etc/redis/redis.conf
sed -i "s/%master-port%/{REDIS_MASTER_PORT}/" /usr/local/etc/redis/redis.conf
redis-server /redis-slave/redis.conf --protected-mode no

${REDIS_MASTER_IP}和${REDIS_MASTER_PORT}为创建images的时候通过ENV变量带入。

通过下面命令构建slave

docker build -t ericnie/redis-slave:3.0  .

 

相关文章:

  • 2021-08-17
  • 2022-01-18
  • 2021-05-06
  • 2022-12-23
  • 2021-09-04
  • 2021-05-18
  • 2022-12-23
猜你喜欢
  • 2021-07-29
  • 2021-10-31
  • 2021-04-22
  • 2021-09-13
  • 2021-05-05
  • 2021-08-31
相关资源
相似解决方案