web-dev-qa-db-fra.com

Appel de redis-cli dans la configuration docker-compose

Je lance l'image officielle Redis https://hub.docker.com/_/redis/ dans une configuration docker-compose

myredis:
  image: redis

Comment exécuter redis-cli avec docker-compose sur cette image?
J'ai essayé ce qui suit, mais il ne s'est pas connecté:

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

La documentation de l'image dit que je devrais exécuter:

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

Comment cela se traduit-il en docker-compose run?

14
ivoba

Cela remplacerait le CMD [ "redis-server" ] par défaut : vous essayez d'exécuter redis-cli sur un conteneur dans lequel le redis-server n'a jamais été exécuté.

Comme mentionné ici , vous pouvez également tester avec:

docker exec -it myredis redis-cli

De docker-compose, comme mentionné dans ce docker/compose le numéro 2123 :

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

Cela devrait également fonctionner:

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

Comme le OP ivoba confirme ( dans les commentaires ), le dernier formulaire fonctionne.
Ensuite:

docker-compose run rcli

ivoba ajoute également:

docker-compose run redis redis-cli -h redis fonctionne également lorsque les conteneurs sont en cours d'exécution.
De cette façon, il n’est pas nécessaire de déclarer un conteneur rcli séparé.

32
VonC

Vous pouvez également utiliser cette commande:

docker-compose run myredis redis-cli -h myredis
4
Hamid FzM

J'ai suivi comme le suggère @VonC, mais dans mon cas, je lance redis sur un réseau prédéfini afin que cela ne fonctionne pas.

Ainsi, dans le cas où le conteneur redis est exécuté sur un réseau spécifique, le champ network doit être spécifié dans le fichier docker-compose.yaml

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