我在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
?
答案 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>