【问题标题】:Mongo-Express: failed to connect to server [mongo:27017] on first connectMongo-Express:首次连接时无法连接到服务器 [mongo:27017]
【发布时间】:2021-02-11 04:40:57
【问题描述】:

我正在尝试使用docker-compose 运行mongomongo-express 的最简单容器。我遇到了很多错误,稍后会解释。

我尝试了以下 docker-compose 配置:

1.

version: '2'
services:
    mongo:
        image: mongo:latest
    mongo-express:
        image: mongo-express:latest
        ports:
            - 8082:8081

2.

version: '2'

services: 
  mongo:
    image: mongo:latest
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    ports:
      - 27017:27017
    volumes:
      - db-data:/data/db
      - mongo-config:/data/configdb

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
volumes: 
  db-data:
  mongo-config:

等等。但是每当我执行docker-compose -f docker-compose.yml up时,它们都会出现以下常见错误:

mongo-express_1  | Mongo Express server listening at http://0.0.0.0:8081
mongo-express_1  | Server is open to allow connections from anyone (0.0.0.0)
mongo-express_1  | basicAuth credentials are "admin:pass", it is recommended you change this in your config.js!
mongo-express_1  | 
mongo-express_1  | /node_modules/mongodb/lib/server.js:265
mongo-express_1  |         process.nextTick(function() { throw err; })
mongo-express_1  |                                       ^
mongo-express_1  | MongoError: failed to connect to server [mongo:27017] on first connect
mongo-express_1  |     at Pool.<anonymous> (/node_modules/mongodb-core/lib/topologies/server.js:326:35)
mongo-express_1  |     at emitOne (events.js:116:13)
mongo-express_1  |     at Pool.emit (events.js:211:7)
mongo-express_1  |     at Connection.<anonymous> (/node_modules/mongodb-core/lib/connection/pool.js:270:12)
mongo-express_1  |     at Object.onceWrapper (events.js:317:30)
mongo-express_1  |     at emitTwo (events.js:126:13)
mongo-express_1  |     at Connection.emit (events.js:214:7)
mongo-express_1  |     at Socket.<anonymous> (/node_modules/mongodb-core/lib/connection/connection.js:175:49)
mongo-express_1  |     at Object.onceWrapper (events.js:315:30)
mongo-express_1  |     at emitOne (events.js:116:13)

我已经在整个互联网和 github 存储库中搜索了这个问题,并尝试了其他解决方案,但没有一个能正常工作。

link1 | link2 | link3 | link4 |等等

【问题讨论】:

  • 看起来您还需要在 docker-express 容器上反映环境变量。见hub.docker.com/_/…。您还应该考虑使用 docker-compose v3(作为示例)。

标签: mongodb docker docker-compose


【解决方案1】:

首先我运行了docker stop $(docker ps -a -q),然后将docker-compose.yml文件改成如下内容:

version: '2'
services:
  mongo:
    image: mongo:3.4
    container_name: mongo
    ports:
      - '27017:27017'
    volumes: 
      - '/data/configdb:/data/configdb'
      - '/data/db:/data/db'
  mongo-express:
    image: mongo-express:0.49.0
    container_name: mongo_express
    depends_on:
      - 'mongo'
    ports:
      - '5050:8081'
    environment:
      - 'ME_CONFIG_OPTIONS_EDITORTHEME=ambiance'

【讨论】:

    【解决方案2】:
    docker run -d 
    -p 8081:8081 
    --name mongo-express 
    -e ME_CONFIG_MONGODB_ADMINUSERNAME=**<username>** 
    -e ME_CONFIG_MONGODB_ADMINPASSWORD=**<password>** 
    --net **<mongo network name>** 
    -e ME_CONFIG_MONGODB_SERVER=**<mongodb container name>** 
    -e ME_CONFIG_OPTIONS_EDITORTHEME=ambiance 
    mongo-express
    

    【讨论】:

    • 请为您的回答提供一些解释。
    猜你喜欢
    • 2012-10-30
    • 2023-03-28
    • 1970-01-01
    • 2013-10-31
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多