Eu me deparei com um problema semelhante, mas com outro serviço (não o MongoDB). Não tenho certeza do que estou fazendo de errado, mas é assim que posso resolver:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
- Com
DB2
sendo o nome do seu serviço em docker-compose.yml 27017
sendo a porta do serviço exposto.- Mais sobre variáveis de ambiente docker-compose a>
- Eu colocaria isso no meu arquivo de configurações. Mas você é livre para colocá-lo onde achar apropriado, dependendo da arquitetura do seu projeto
ATUALIZAÇÃO
Agora, os contêineres de composição do docker podem ser acessados por outros serviços usando um nome de host semelhante ao seu alias. documentação do link :
E dessa forma você pode se conectar ao MongoDB assim:
import mongoengine
mongoengine.connect(host="db2")