2015-10-23 75 views
8

我在docker-compose設置中運行官方redis鏡像https://hub.docker.com/_/redis/在docker-compose設置中調用redis-cli

myredis: 
    image: redis 

如何在該映像上運行redis-cli與docker-compose?
我想:

docker-compose run myredis redis-cli 

但是這不會連接: 無法在127.0.0.1:6379連接到Redis的:連接拒絕

圖像的文檔說我應該運行:

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"' 

這是怎麼翻譯成docker-compose run

回答

17

這將覆蓋the default CMD [ "redis-server" ]:您試圖在從未執行過redis-server的容器上運行redis-cli

As mentioned here,你也可以測試:

docker exec -it myredis redis-cli 

從泊塢窗,撰寫,如前所述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容器。

+0

太好了!作品。我採取了最後一種方法,並運行它:docker-compose run rcli – ivoba

+0

@ivoba優秀!我已將您的評論納入答案中,以獲得更多的知名度。 – VonC

+0

'docker-compose run redis redis-cli -h redis'在容器運行時也適用。這樣就不需要聲明一個獨立的rcli容器。 – ivoba

2

您也可以使用這個命令:

docker-compose run myredis redis-cli -h myredis 
+0

這已經在上面的答案中用不同的名字說過了 – ivoba