Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

3.7K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!