Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

341
Vistas
Comunicación entre 2 aplicaciones de matraz en contenedores docker

Con 2 aplicaciones de matraz dentro de 2 contenedores separados, pensé que sería posible ejecutar una solicitud GET de uno y devolver información del segundo, pero obtengo [Errno 111] Connection refused . Con la siguiente configuración:

app1.py

 @app.route('/get_message') def get_message(): message = requests.get('http://web2:5001/return_message') return message.text if __name__ == '__main__': app.run(host='0.0.0.0')

app2.py

 @app.route('/return_message') def return_message(): return 'the message' if __name__ == '__main__': app.run(host='0.0.0.0')

docker-compose.yml

 version: "3.7" services: web1: build: ./web1 container_name: web1 ports: - "5000:5000" web2: build: ./web2 container_name: web2 ports: - "5001:5001"

El punto final para app1 funciona cuando se va a http://127.0.0.1:5000/get_message , pero el matraz devuelve:

 requests.exceptions.ConnectionError: HTTPConnectionPool(host='web2', port=5001): Max retries exceeded with url: /return_message (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb866642d30>: Failed to establish a new connection: [Errno 111] Connection refused',))

Intentar asignar una dirección IP estática al contenedor web2 y usar la IP en la solicitud de get no funciona, ni tampoco funciona el uso de networks , link o depends_on dentro del archivo docker-compose . También intenté exponer diferentes puertos en ambos contenedores en diferentes combinaciones, pero no obtuve el mensaje entre ellos.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que cuando activa sus aplicaciones, ambas se ejecutan en el puerto 5000 pero en diferentes contenedores, así que intente cambiar su app1.py a:

 @app.route('/get_message') def get_message(): message = requests.get('http://web2:5000/return_message') return message.text if __name__ == '__main__': app.run(host='0.0.0.0')

Y también cambie los puertos en docker-compose para web2 :

 version: "3.7" services: web1: build: ./web1 container_name: web1 ports: - "5000:5000" web2: build: ./web2 container_name: web2 ports: - "5001:5000"

Sin embargo, no es necesario cambiar los puertos en docker-compose si no desea acceder a web2 desde el host; tenga en cuenta que aquí asigno el puerto 5001 de su host al puerto 5000 del contenedor web2 y ambos contenedores exponen la aplicación en el puerto 5000.

Recuerde que estos son contenedores separados, por lo que les gustan los entornos separados. Y también tenga en cuenta que EXPOSE es solo para documentar que expone algún servicio en este puerto; no hace que su aplicación en el contenedor se ejecute en este puerto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda