Ich bin auf ein ähnliches Problem gestoßen, aber mit einem anderen Dienst (nicht MongoDB). Ich bin mir nicht sicher, was ich falsch mache, aber so könnte ich es lösen:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
- Mit
DB2
der Name Ihres Dienstes in docker-compose.yml ist 27017
der Port des exponierten Dienstes ist.- Mehr über docker-compose-Umgebungsvariablen
- Ich würde das in meine Einstellungsdatei schreiben. Es steht Ihnen jedoch frei, es je nach Ihrer Projektarchitektur dort zu platzieren, wo Sie es für angemessen halten.
AKTUALISIEREN
Docker-Compose-Container sind jetzt für andere Dienste erreichbar, die einen Hostnamen verwenden, der ihrem Alias ähnelt. Link-Dokumentation :
Und auf diese Weise können Sie sich wie folgt mit MongoDB verbinden:
import mongoengine
mongoengine.connect(host="db2")