Me encontré con un problema similar pero con otro servicio (no MongoDB). No estoy seguro de lo que estoy haciendo mal, pero así es como podría resolverlo:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
- Con
DB2
siendo el nombre de su servicio en docker-compose.yml 27017
siendo el puerto del servicio expuesto.- Más información sobre las variables de entorno de docker-compose
- Lo pondría en mi archivo de configuración. Pero eres libre de ponerlo donde creas que es apropiado dependiendo de la arquitectura de tu proyecto
ACTUALIZAR
Ahora, otros servicios pueden acceder a los contenedores docker-compose mediante un nombre de host similar a su alias. documentación del enlace :
Y de esa manera puedes conectarte a MongoDB así:
import mongoengine
mongoengine.connect(host="db2")