Jag stötte på ett liknande problem men med en annan tjänst (inte MongoDB). Jag är inte säker på vad jag gör fel men så här skulle jag kunna lösa det:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
- Med
DB2
är namnet på din tjänst i docker-compose.yml 27017
vara hamnen för den exponerade tjänsten.- Mer om docker-compose miljövariabler
- Jag skulle lägga det i min inställningsfil. Men du är fri att placera den var du än tycker att den är lämplig beroende på din projektarkitektur
UPPDATERA
Nu kan docker-compose-behållare nås av andra tjänster som använder ett värdnamn som liknar deras alias. länkdokumentation :
Och på så sätt kan du ansluta till MongoDB så här:
import mongoengine
mongoengine.connect(host="db2")