Docker MongoDB:UserNotFound

Phi*_*ert 5 mongodb docker dockerfile docker-compose

我正在为 Docker 构建一个非交互式可配置的 MongoDB 映像,目前的目标是能够以编程方式从配置文件加载身份验证用户。我目前的问题是,虽然我可以成功地将用户添加到数据库,但他们似乎不会在构建过程中持续存在,因此我的节点容器无法成功针对数据库进行身份验证。

这是我的 mongodb 实例的主要 dockerfile:

FROM mongo:latest

#Installing Node
RUN apt-get update && \
    apt-get install -y curl && \
    curl -sL https://deb.nodesource.com/setup_6.x | bash - && \
    apt-get install -y nodejs

#Setting Up Mongo
WORKDIR /var/www/smq
COPY ./docker/mongo-setup.js mongo-setup.js
COPY ./.config/mongo /var/www/.config/mongo
RUN if [ -e /var/www/.config/mongo/mongod.conf ] ; then cp /var/www/.config/mongo/mongod.conf /etc/mongod.conf ; fi
RUN mongod --port 27017 & node mongo-setup.js && mongod --shutdown

CMD ["mongod", "--auth", "--port", "27017"]
Run Code Online (Sandbox Code Playgroud)

我的设置还依赖于 docker-compose:

  mongodb:
    build:
      context: ../
      dockerfile: ./docker/mongodb-dockerfile
    container_name: mongo_container
    volumes:
     - /data/db
Run Code Online (Sandbox Code Playgroud)

在步骤RUN mongod --port 27017 & node mongo-setup.js && mongod --shutdown,我得到了显示通过 mongo shell 成功创建用户的打印。但是,当两个 docker 容器(mongo 和 node)连接时,我从 mongod 收到以下错误:

2017-01-02T20:43:14.895+0000 我从客户端 172.20.0.3:49762 访问 mydb 上的 mydbuser [conn1] SCRAM-SHA-1 身份验证失败;UserNotFound:找不到用户 mydbuser@mydb

我该如何解决这个问题?

最终,这是对我的设置开源的一种努力,因此您可以通过从 github 中提取此存储库来重现该步骤(目前所述设置/node-mongo在分支下node-mongo)。干杯!