Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Docker [Errno 111] Falha na chamada de conexão ('127.0.0.1', 6379)


Tente alterar 127.0.0.1:6379 para redis:6379 .

Embora o Redis esteja em execução, seu python container não consegue se comunicar com ele; isso ocorre porque ele está tentando se conectar a 127.0.0.1:6379 , mas da perspectiva do contêiner, não há nada em execução lá. Isso pode ser um pouco frustrante para depurar, mas é um pouco mais fácil se você tiver em mente que os contêineres obtêm seu próprio namespace de rede. Como resultado, python 's localhost !=redis 's localhost !=o localhost da sua máquina host .

Felizmente, é fácil conectar contêineres que compartilham a mesma ponte e, por padrão, docker-compose cria uma rede de ponte única e conecta todos os seus contêineres a eles, fornecendo o DNS necessário para permitir que eles se descubram. Como resultado, a comunicação entre contêineres funciona simplesmente usando o nome do serviço.

Como observação, é possível executar contêineres no mesmo namespace e executá-los no namespace do host, por meio do --net=container:<container-id> ou --net=host bandeira. Isso é especialmente útil para executar ferramentas de depuração em um contêiner e anexá-las ao namespace de rede de outro contêiner ou do host, por exemplo. usando netshoot para ver quais portas estão escutando dentro do contêiner (expostas ou não), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn .