Comunicación entre dos services de matraz en Docker

Tengo dos aplicaciones de Flask, cada una en un contenedor por separado. Me gustaría llamar a la aplicación A desde la aplicación B. Por el momento, solo puedo hacerlo mediante la encoding de IP de la aplicación A como esta:

@app.route('/') def hello_world(): r = requests.get('http://172.18.0.1:5000') return r.text 

¿Hay una manera simple de hacer llamadas usando alias de contenedores? ¿Cuál sería la solución recomendada para dicho problema, es decir, dos services que se comunican entre sí?

Soy nuevo en Docker y no estoy seguro de qué debería search, por lo que cualquier recurso / enlace sería muy apreciado.

En primer lugar, es muy recomendable usar hostname de hostname lugar de IP. ¿Pero por qué? Ip podría cambiar cada vez y es muy molesto comprobar una y otra vez qué IP tiene la aplicación, pero el hostname cambia solo si así lo desea.

Entonces:

 cd path/to/dockerfile docker build -t your_repo/image_name . docker run -d -p 6000:5000 image_name --name hostname 

Y tu app.py (solo un nombre) debería ser así:

 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): r = requests.get('http://hostname:5000') return r.text if __name__ == '__main__': app.run(host='0.0.0.0') 

Tenga en count que estoy usando el host '0.0.0.0' porque puede experimentar algunos problemas al intentar conectar ambos contenedores.

Espero que sea suficiente para solucionar el problema.

¡Que tengas un buen día!