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
?
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 conteneurrcli
séparé.
Vous pouvez également utiliser cette commande:
docker-compose run myredis redis-cli -h myredis
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>