9

我希望在 coreOS 集群上部署高可用性 Redis,我需要一个可以工作的 Redis Sentinel docker 映像(即 Dockerfile)。我已经收集了足够的信息/专业知识来创建一个(我认为)......但是我对高级网络的有限知识/经验是唯一阻止我构建和分享它的东西。

这里的专家可以帮助我开发 Redis Sentinel Dockerfile(目前不存在)吗?Redis/Docker 社区将真正从中受益。

这是更广泛的问题和背景: https ://github.com/antirez/redis/pull/1908

我认为解决方案就在这里: https ://github.com/antirez/redis/pull/1908#issuecomment-54380876

这是我一直在使用的 Dockerfile……但是如果您阅读上面的帖子,您会看到我的评论 (joshula)……它缺少 mattsta 正在谈论的网络修复。请注意,因为我在 coreOS 上使用它,所以 sentinel.conf 中的任何配置设置都是在运行时通过命令行设置的(因此是 ENTRYPOINT)。

# Pull base image.
FROM dockerfile/ubuntu:latest

# Install Redis.
RUN \
  cd /tmp && \
  wget http://download.redis.io/redis-stable.tar.gz && \
  tar xvzf redis-stable.tar.gz && \
  cd redis-stable && \
  make && \
  make install && \
  cp -f src/redis-sentinel /usr/local/bin && \
  mkdir -p /etc/redis && \
  cp -f *.conf /etc/redis && \
  rm -rf /tmp/redis-stable* && \
  sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && \
  sed -i 's/^\(daemonize .*\)$/# \1/' /etc/redis/redis.conf && \
  sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/redis/redis.conf && \
  sed -i 's/^\(logfile .*\)$/# \1/' /etc/redis/redis.conf

# Define mountable directories.
VOLUME ["/data"]

# Define working directory.
WORKDIR /data

# Expose ports.
EXPOSE 26379

# Define default command.
ENTRYPOINT redis-sentinel /etc/redis/sentinel.conf
4

2 回答 2

12

After a ton of work, I ended up figuring this out. Here's to making it simple for anyone else who wants to deploy a highly available redis instance via Docker:

https://registry.hub.docker.com/u/joshula/redis-sentinel/

于 2014-09-19T16:07:42.880 回答
1

不需要自定义哨兵图像,也不需要搞乱网络。请参阅我的使用Spring Data Redisbitnami/redisbitnami/redis-sentinel图像的redis-ha-learning项目。Docker Compose 文件在这里。我的代码根据 Docker Compose 容器名称自动检测哨兵。

于 2020-11-24T08:05:29.770 回答