redis - 将初始数据加载到 Redis Docker 容器中

标签 redis docker

我正在尝试创建一个基于 redis:3 的 Redis Docker 镜像。但是,我需要将少量测试数据加载到图像中(它用于在开发人员机器和 CI 服务器上进行测试)。

我最初的尝试是这样的:

FROM redis:3.0.3
MAINTAINER Howard M. Lewis Ship

RUN redis-cli sadd production-stores 5555

但这失败并出现错误:

Step 2 : RUN redis-cli sadd production-stores 5555
 ---> Running in 60fb98c133c0
Could not connect to Redis at 127.0.0.1:6379: Connection refused
The command '/bin/sh -c redis-cli sadd production-stores 5555' returned a non-zero code: 1

我想知道是否有一个技巧可以让我在 Docker 文件中连接到通过 Dockerfile 的 CMD/ENTRYPOINT 启动的服务器。正如我现在猜测的那样,RUN 发生在命令启动之前。

或者,是否有 Redis 命令或技巧可以让我将一些数据加载到它的数据库中。

我怀疑一种方法是将 Redis 的数据目录挂载到暴露给 Docker 主机的卷中;这并不理想,因为

  1. 我需要一个额外的非 Dockerfile 命令来加载数据
  2. 加载的数据不会在图像中共享,供我团队中的其他人使用
  3. 我在 OS X 上并且正在使用 docker-machine,所以卷变得更加棘手

最佳答案

在运行 redis-cli 之前,该错误告诉 Redis 服务未启动。

添加一个新行以首先启动它。让我知道这是否可以解决您的问题。

FROM redis:3.0.3
MAINTAINER Howard M. Lewis Ship

RUN /usr/sbin/redis-server /etc/redis.conf

RUN redis-cli sadd production-stores 5555

更新:

评论官方redis image , 已经给出了使用redis-cli的方法

# via redis-cli
$ docker run -it --link some-redis:redis --rm redis sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'

所以我测试图像并使其运行如下:

# start redis container
$ docker run --name some-redis -d redis

# link redis container and run redis-cli command    
$ docker run -it --link some-redis:redis --rm redis redis-cli -h redis
redis:6379> PING
PONG
redis:6379> exit

# Add the specified members to the set stored at key    
$ docker run -it --link some-redis:redis --rm redis redis-cli -h redis sadd production-stores 5555
(integer) 1
$

关于redis - 将初始数据加载到 Redis Docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33004557/

相关文章:

ruby-on-rails - Herkou Redis - 证书验证失败(证书链中的自签名证书)

docker - 具有不同用户的单一容器定义

Docker 上的 Wordpress : Could not create directory on mounted volume

c++ - 在 C++ 中线程化 Redis 连接

docker - 如何正确验证 docker 客户端 golang 库到 gcr.io 注册表?

Docker secret 作为环境变量传递

python - 导入错误 : import apache_beam as beam. 找不到模块

python - Redis 转储到 PostgreSQL

redis集群给客户端127.0.0.1 ip

asp.net-mvc - 订阅 ServiceBus 以获取通知