2 votes

Accès à redis dockerisé à partir d'un hôte Windows

Pour le développement de node backend sur Windows, j'essaie de configurer redis dans un conteneur docker car la version Windows de redis semble être boguée pour moi. Je suis très novice en matière de docker et je ne suis pas au courant de tous les principes qui l'accompagnent.

Ce que j'ai fait jusqu'à présent :

  1. Docker installé
  2. Exécutez 'docker pull redis'.
  3. Exécutez 'docker run --name some-redis -d redis redis-server --appendonly yes' pour démarrer le conteneur redis.

Le problème :

J'ai essayé de me connecter à 127.0.0.1:6379 (ce qui fonctionnait lorsque redis était installé en natif sur mon système), mais il y a un timeout. Je pensais que le conteneur redis avait sa propre adresse ip et je me suis dit que son adresse ip était 172.17.0.2. La connexion à cette adresse n'a pas fonctionné non plus.

PS C:\WINDOWS\system32> docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-redis
172.17.0.2

PS C:\WINDOWS\system32> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d3b796e9df5c        redis               "docker-entrypoint..."   About an hour ago   Up 8 minutes        6379/tcp            some-redis

Qu'est-ce qui me manque pour me connecter de ma machine locale à redis à l'intérieur de mon conteneur (mon application node n'est pas dockerisée) ?

3voto

Bukharov Sergey Points 3831

Vous manquez d'exposer le port. Exécutez le conteneur redis avec la commande

docker run --name some-redis -p6379:6379 -d redis redis-server --appendonly yes

Si Dockerfile contient EXPOSE <some_port> il signifie un autre conteneur dans le même réseau docker peut se connecter à ce port. Rien de plus.

Si vous voulez vous connecter à un conteneur depuis la machine hôte, vous devez en parler à Docker.

  • vous pouvez ajouter -P option pour docker run commande. Dans ce cas, docker expose tous les ports définis à des ports aléatoires sur votre machine locale.
  • Ou vous pouvez ajouter l'option -p<port_on_host_machine>:<port_inside_docker_container> alors vous exposez certains ports.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X