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

345
Visualizações
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 Respostas
Responde à pergunta

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 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