You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Context Provider应用连接MongoDB失败,寻求问题排查方案

Context Provider无法连接MongoDB的排查与解决

问题根因

从日志中的connect ECONNREFUSED 127.0.0.1:27017可以明确:Context Provider的Node.js应用在尝试连接容器自身的localhost,而非Docker Compose网络中的MongoDB服务。在Docker Compose默认网络环境下,服务之间需通过服务名(此处为mongo-db)互相访问,而非localhost。Orion能正常连接是因为通过-dbhost mongo-db参数指定了正确的主机名,但Context Provider应用未配置对应参数。

解决办法

修改docker-compose.yml中的tutorial服务,添加MongoDB连接相关环境变量,指定MongoDB服务的主机名:

tutorial:
    image: quay.io/fiware/tutorials.context-provider
    hostname: context-provider
    container_name: fiware-tutorial
    networks:
        - default
    expose:
        - "3000"
    ports:
        - "3000:3000"
    environment:
        - "DEBUG=tutorial:*"
        - "PORT=3000"
        - "CONTEXT_BROKER=http://orion:1026/v2"
        - "MONGO_HOST=mongo-db"  # 新增:指定MongoDB服务名
        - "MONGO_PORT=27017"     # 可选,默认即为27017
        - "OPENWEATHERMAP_KEY_ID=<ADD_YOUR_KEY_ID>"
        - "TWITTER_CONSUMER_KEY=<ADD_YOUR_CONSUMER_KEY>"
        - "TWITTER_CONSUMER_SECRET=<ADD_YOUR_CONSUMER_SECRET>"

添加MONGO_HOST=mongo-db后,应用会指向Docker Compose网络中的MongoDB服务,而非容器自身的localhost。重启容器后,Context Provider即可正常连接MongoDB,日志中的ERR_HTTP_HEADERS_SENT等后续异常也会随之消失。

内容的提问来源于stack exchange,提问作者igomisp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:53:11