在docker-compose设置中调用redis-cli

时间:2015-10-23 14:07:53

标签: docker docker-compose

我在docker-compose设置中运行官方Redis图片https://hub.docker.com/_/redis/

myredis:
  image: redis

如何在该图片上使用docker-compose运行redis-cli? 我尝试了以下内容,但它没有连接:

docker-compose run myredis redis-cli
> Could not connect to Redis at 127.0.0.1:6379: Connection refuse

图像的文档说我应该运行:

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

这如何转化为docker-compose run

3 个答案:

答案 0 :(得分:36)

这会覆盖the default CMD [ "redis-server" ]:您正试图在永远不会执行redis-cli的容器上运行redis-server

As mentioned here,你也可以测试:

docker exec -it myredis redis-cli

来自docker-compose,如上所述in this docker/compose issue 2123

rcli:
  image: redis:latest
  links:
    - redis
  command: >
     sh -c 'redis-cli -h redis '
  

这也应该有效:

rcli:
  image: redis:latest
  links:
    - redis
  command: redis-cli -h redis

OP ivoba确认(in the comments)时,最后一种形式有效 然后:

docker-compose run rcli

ivoba还补充道:

  当容器运行时,

docker-compose run redis redis-cli -h redis也可以工作   这样就没有必要声明一个单独的rcli容器。

答案 1 :(得分:4)

您也可以使用此命令:

docker-compose run myredis redis-cli -h myredis

答案 2 :(得分:1)

我按照@VonC的建议进行操作,但是在我的情况下,我在预定义的网络上运行redis,所以它没有用。

因此,在Redis容器在特定网络中运行的情况下,network字段应在docker-compose.yaml文件中指定

rcli:
  image: redis:latest
  links:
    - redis
  command: redis-cli -h redis
  networks: 
    - <network redis run on>