首页 > 解决方案 > 无法使用 docker-compose 从主机连接到 mongo

问题描述

我正在使用 docker-compose 运行我的 mongo db

version: '3'
services:
  db:
    image: mongo:4
    ports: 
      - "27017:27017"
    volumes:
      - ./storage/mongo:/data/db:rw
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin123
    command: --smallfiles --bind_ip_all --port 27017

当我做

$> docker-compose exec db bash

我可以简单地连接到我的数据库

$> mongo -u admin -p admin123

但是,当我从主机系统执行相同操作时,我无法连接

(master) ✗ mongo -u admin -p admin123                                 
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("8689631e-ac9c-40f8-aa2a-e55f6103224f") }
MongoDB server version: 4.0.9
2019-05-11T17:44:19.181+0200 E QUERY    [js] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
@(auth):6:1
@(auth):1:2
exception: login failed

我也尝试过--host 0.0.0.0但结果相同。下面是清单ps

$> docker-compose ps
       Name                      Command               State                                  Ports                                
-----------------------------------------------------------------------------------------------------------------------------------
       db_1         docker-entrypoint.sh --sma ...     Up      0.0.0.0:27017->27017/tcp 

我感觉 mongo 不接受远程连接,这就是我添加command: --smallfiles --bind_ip_all --port 27017但没有帮助的原因。任何建议我做错了什么?

标签: mongodbdockerdocker-compose

解决方案


推荐阅读