我正在为Docker构建一个非交互式可配置的MongoDB映像,目前的目标是能够以编程方式从配置文件加载auth用户。我目前的问题是,虽然我可以成功地将用户添加到数据库,但它们似乎不会在构建过程中持续存在,因此我的节点容器无法成功地对数据库进行身份验证。
这是我的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"]
我的设置还依赖于docker-compose:
mongodb:
build:
context: ../
dockerfile: ./docker/mongodb-dockerfile
container_name: mongo_container
volumes:
- /data/db
在步骤RUN mongod --port 27017 & node mongo-setup.js && mongod --shutdown
,我得到的印刷品显示通过mongo shell成功创建用户。但是当连接两个docker容器(mongo& node)时,我从mongod得到以下错误:
2017-01-02T20:43:14.895 + 0000 I ACCESS [conn1]来自客户端172.20.0.3:49762的mydb上mydbuser的SCRAM-SHA-1认证失败; UserNotFound:找不到用户mydbuser @ mydb
如何解决此问题?
最终,这是开源我的设置的努力,因此您可以通过从github拉this repository来重现该步骤(目前所述设置位于分支/node-mongo
下的node-mongo
下})。干杯!