Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

3.7K
Visualizações
Error 99 al conectarse a localhost:6379. No se puede asignar la dirección solicitada

Configuración: tengo una máquina virtual y en la máquina virtual ejecuto tres contenedores (un proxy nginx, una aplicación de matraz muy minimalista y redis). Flask debería estar sirviendo en el puerto 5000 mientras que redis en 6379.

Cada uno de estos contenedores funciona perfectamente como un servicio independiente, pero también está disponible a través de docker compose as a service .

En la aplicación del matraz, mi objetivo es conectarme a redis y consultar algunas claves.

El contenedor nginx expone el puerto 80, el puerto matraz 5000 y el puerto redis 6379.

En la aplicación del matraz tengo una función que intenta crear un cliente redis

 db = redis.Redis(host='localhost', port=6379, decode_responses=True)

Al ejecutar la aplicación del matraz, recibo un error que indica que el puerto no se puede usar

 redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

No tengo claro qué podría estar causando este problema y cualquier idea sería apreciada.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En la aplicación del matraz tengo una función que intenta crear un cliente redis

 db = redis.Redis(host='localhost', port=6379, decode_responses=True)

Cuando su proceso de matraz se ejecuta en un contenedor, localhost se refiere a la interfaz de red del propio contenedor. No se resuelve en la interfaz de red de su host docker.

Por lo tanto, debe reemplazar localhost con la dirección IP del contenedor que ejecuta redis.

En el contexto de un archivo docker-compose.yml, esto es fácil ya que docker-compose hará que los nombres de los servicios se resuelvan en la dirección IP correcta del contenedor:

 version: "3" services: my_flask_service: image: ... my_redis_service: image: ...

luego, en su aplicación de matraz, use:

 db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)
over 4 years ago · Santiago Trujillo Relatório

0

Tuve el mismo problema, excepto que el servicio al que quería que accediera mi contenedor era remoto y estaba asignado a través del túnel ssh a mi host Docker. En otras palabras, no había un servicio de docker-compose para que mi código lo encontrara. Resolví el problema diciéndole explícitamente a redis que buscara mi host local como una cadena:

 pyredis.Redis(host='docker.for.mac.localhost', port=6379)
over 4 years ago · Santiago Trujillo Relatório

0

Cualquiera que use solo Docker para ejecutar un contenedor, puede agregar --network=host en el comando como docker run --network=host para hacer que Docker use la red del host mientras ejecuta el contenedor.

También puede usar una red de host para un servicio de enjambre, pasando --network host al comando docker service create .
Asegúrese de no publicar ningún puerto mientras hace esto. como -p 80:8000

No estoy seguro de si Docker compose es compatible con esto.

Nb, esto solo es compatible con Linux.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda