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

Calling redis-cli in docker-compose setup

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

myredis:
  image: redis

运行 redis-cli 和 docker 如何在该图像上合成?
我尝试了以下方法,但没有连接:

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

这将覆盖 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 '

This should also works:

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

作为 OP ivoba confirms (),最后一种形式有效。
那么:

docker-compose run rcli

ivoba 还补充说:

docker-compose run redis redis-cli -h redis works also when the containers are running.
This way its not necessary to declare a separate rcli container.

你也可以使用这个命令:

docker-compose run myredis redis-cli -h myredis

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

所以在特定网络中的redis容器运行的情况下,network字段应该在docker-compose.yaml文件

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