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

Docker中mongo-express连接Mongo容器失败:名称无法解析,配置被覆盖

问题分析与解决方案

1. 「name does not resolve」错误修复

这个错误的核心原因是mongo-express与Mongo容器不在同一个Docker用户定义网络,默认bridge网络不支持容器名称解析,导致无法通过容器名找到Mongo服务。

操作步骤:

  • 创建自定义网络:
    docker network create mongo-network
    
  • 启动Mongo容器时指定该网络:
    docker run -d --name mongodb --network mongo-network -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password mongo
    
  • 启动mongo-express时加入同一个网络:
    docker run -d --name mongo-express --network mongo-network -e ME_CONFIG_MONGODB_SERVER=mongodb -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -p 8081:8081 mongo-express
    

2. 认证配置被覆盖问题解决

配置被覆盖通常是环境变量未正确传递,或容器未关联到正确的Mongo服务导致mongo-express启用默认配置。以下是修正后的docker-compose.yml:

version: '3.8'
services:
  mongodb:
    image: mongo
    container_name: mongodb
    networks:
      - mongo-network
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: password
    volumes:
      - mongo-data:/data/db
    # 增加健康检查,确保Mongo就绪后再启动mongo-express
    healthcheck:
      test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
      interval: 10s
      timeout: 5s
      retries: 5

  mongo-express:
    image: mongo-express
    container_name: mongo-express
    networks:
      - mongo-network
    environment:
      ME_CONFIG_MONGODB_SERVER: mongodb
      ME_CONFIG_MONGODB_ADMINUSERNAME: admin
      ME_CONFIG_MONGODB_ADMINPASSWORD: password
      # 可选:设置mongo-express自身的基础认证
      ME_CONFIG_BASICAUTH_USERNAME: me-admin
      ME_CONFIG_BASICAUTH_PASSWORD: me-password
    ports:
      - "8081:8081"
    depends_on:
      mongodb:
        condition: service_healthy

networks:
  mongo-network:
    driver: bridge

volumes:
  mongo-data:

关键注意事项:

  • 所有环境变量名称必须严格匹配,比如ME_CONFIG_MONGODB_SERVER的值要和Mongo容器名mongodb完全一致;
  • depends_on配合健康检查,避免mongo-express在Mongo未就绪时启动,导致配置加载异常。

3. 验证操作

  • 检查容器网络归属,确认两者在同一网络:
    docker inspect mongodb | grep Networks
    docker inspect mongo-express | grep Networks
    
  • 查看mongo-express日志,确认连接成功:
    docker logs mongo-express
    
    日志中出现Mongo Express server listening at http://0.0.0.0:8081且无连接错误,即为配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:37:38