Graylog容器无法连接到MongoDB容器

在docker下设置Graylog2有一些麻烦。 一切工作,直到我尝试使用validation。 我得到的是以下错误永远重复。

graylog rootgraylog用户(在graylogadmin db中)都给出了相同的结果。

来自mongodb的日志说,这两个用户都是在安装过程中创build的。 但是,graylog表示在数据库graylog找不到任何graylog用户。 与用户root相同。

我是MongoDB的新手,不知道身份validation如何工作。 但是从我所了解的身份validation(类似于--auth参数)在为root帐户( https://github.com/docker-library/mongo/pull/145 )提供user / pw时被激活。

Graylog是否有可能采用与MongoDB不同的身份validation机制? 在粘贴的日志中看到#158行

错误消息以root用户身份

 mongodb_1 |  2017-04-16T13:27:52.486 + 0000 I NETWORK [thread1]连接从172.18.0.4:46566#12接受(现在打开1个连接)
 mongodb_1 |  2017-04-16T13:27:52.495 + 0000 I NETWORK [conn12]从172.18.0.4:46566接收到客户端元数据conn12:{driver:{name:“mongo-java-driver”,version:“unknown”},os: {type:“Linux”,名称:“Linux”,架构:“amd64”,版本:“4.4.0-72-generic”},平台:“Java / Oracle Corporation / 1.8.0_72-internal-b15”}
 mongodb_1 |  2017-04-16T13:27:52.525 + 0000 I ACCESS [conn12] SCRAM-SHA-1身份validation在客户端的graylog上的根目录失败172.18.0.4:46566;  UserNotFound:无法find用户root @ graylog
 mongodb_1 |  2017-04-16T13:27:52.543 + 0000 I  -  [conn12]结束连接172.18.0.4:46566(现在打开1个连接)

错误消息为graylog用户 ( 完全loginpastebin )

 mongodb_1 |  2017-04-16T15:47:48.404 + 0000 I NETWORK [thread1]连接从172.18.0.4:41602#7接受(现在打开1个连接)
 mongodb_1 |  2017-04-16T15:47:48.410 + 0000 I NETWORK [conn7]收到来自172.18.0.4:41602的客户端元数据conn7:{driver:{name:“mongo-java-driver”,version:“unknown”},os: {type:“Linux”,名称:“Linux”,架构:“amd64”,版本:“4.4.0-72-generic”},平台:“Java / Oracle Corporation / 1.8.0_72-internal-b15”}
 mongodb_1 |  2017-04-16T15:47:48.418 + 0000访问[conn7]对客户端的graylog上的graylog进行SCRAM-SHA-1authentication失败172.18.0.4:41602;  UserNotFound:无法find用户graylog @ graylog
 mongodb_1 |  2017-04-16T15:47:48.423 + 0000 I  -  [conn7]结束连接172.18.0.4:41602(现在打开1个连接)

这是我的./docker-composer.yml


    版本:'2'
    服务:
       MongoDB的:
        build立:./mongodb
        卷:
           -  / docker / mongodb / data:/ data / db
       elasticsearch:
         image:“elasticsearch:2”
        命令:“elasticsearch -Des.cluster.name ='graylog'”
        卷:
           -  / docker / elasticsearch / data:/ usr / share / elasticsearch / data
       graylog:
        图片:graylog2 /服务器
        卷:
           -  / docker / graylog / journal:/ usr / share / graylog / data / journal
           -  / docker / graylog / config:/ usr / share / graylog / data / config
        环境:
           #GRAYLOG_MONGODB_URI:mongodb:// root:drUqGGCMh @ mongodb:27017 / graylog
           GRAYLOG_MONGODB_URI:mongodb:// graylog:vWGzncmBe9 @ mongodb:27017 / graylog
        依赖于取决于:
           -  mongodb
           -  elasticsearch
        端口:
           - “9000:9000”

./mongodb/Dockerfile


    从mongo:3
     ENV MONGO_INITDB_ROOT_USERNAME:root
     ENV MONGO_INITDB_ROOT_PASSWORD:drUqGGCMh
    添加grayloguser.js /docker-entrypoint-initdb.d/grayloguser.js

./mogodb/grayloguser.js


     db.getSiblingDB( 'graylog');
     db.createUser(
       {
        用户:“graylog”,
         pwd:“vWGzncmBe9”,
        angular色:[
            {angular色:“dbOwner”,db:“graylog”}
         ]
       }
     );

你的MongoDB脚本不正确。

db.getSiblingDB('graylog')的返回值db.getSiblingDB('graylog')一个variables,并将其用于createUser() ,或者继续使用use graylog

 graylog = db.getSiblingDB('graylog'); graylog.createUser( { user: "graylog", pwd: "vWGzncmBe9", roles: [ { role: "dbOwner", db: "graylog" } ] } ); 

换句话说,只要坚持MongoDB文档: https : //docs.mongodb.com/manual/tutorial/create-users/#username-password-authentication