Ho riscontrato un problema simile ma con un altro servizio (non MongoDB). Non sono sicuro di cosa sto sbagliando, ma ecco come potrei risolverlo:
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
essendo il nome del tuo servizio in docker-compose.yml 27017
essendo il porto del servizio esposto.- Ulteriori informazioni sulle variabili d'ambiente docker-compose
- Lo metterei nel mio file delle impostazioni. Ma sei libero di metterlo dove ritieni sia appropriato a seconda dell'architettura del tuo progetto
AGGIORNAMENTO
Ora i contenitori docker-compose sono raggiungibili da altri servizi utilizzando un nome host simile al loro alias. collega la documentazione :
E in questo modo puoi connetterti a MongoDB in questo modo:
import mongoengine
mongoengine.connect(host="db2")