Natknąłem się na podobny problem, ale z inną usługą (nie MongoDB). Nie jestem pewien, co robię źle, ale tak mógłbym to rozwiązać:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
- Z
DB2
będąca nazwą Twojej usługi w docker-compose.yml 27017
będący portem wystawionej usługi.- Więcej informacji o zmiennych środowiskowych docker-compose
- Umieściłbym to w moim pliku ustawień. Ale możesz umieścić go tam, gdzie uważasz, że jest to odpowiednie, w zależności od architektury twojego projektu
AKTUALIZUJ
Teraz kontenery docker-compose są dostępne dla innych usług przy użyciu nazwy hosta podobnej do ich aliasu. dokumentacja linków :
W ten sposób możesz połączyć się z MongoDB w ten sposób:
import mongoengine
mongoengine.connect(host="db2")