如何使用数据库用户和密码启动mongo docker映像

时间:2018-10-18 23:13:07

标签: javascript node.js mongodb docker

我正在尝试对我的nodejs / mongodb / mongoose应用进行docker-ize。 在我的app.js中,我调用了本地数据库:

mongoose.connect('mongodb://'mydbuser":"+mydbpassword"@"localhost"/"+nodekb,{ useMongoClient: true });

我在docker-compose.yml中的服务部分看起来像这样:

  mongo:
    image: "mongo"
    ports:
      - "27017:27017"

我正在使用默认的docker mongo映像。 我的本地mongo使用mongo配置文件“ mongod.cfg”:

systemLog:
    destination: file
    path: "C:\\data\\log\\mongod.log"
storage:
    dbPath: "C:\\data"
net:
    port: 27017
security:
    authorization: enabled
setParameter:
    enableLocalhostAuthBypass: false

我该如何注入dbadmin,dbpw和mongo配置文件,以便从docker mongo映像中使用它,我们要做docker-compose吗? 我想使用COPY命令可以很容易地注入mongo配置,但是如何告诉图像使用它呢?

谢谢大家。

2 个答案:

答案 0 :(得分:0)

您可以在环境下传递相关信息。在文档上很清楚。

基本设置如下所示。

mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment: 
       MONGO_INITDB_ROOT_USERNAME: root
       MONGO_INITDB_ROOT_PASSWORD: example
  

答案 1 :(得分:0)

当您要连接到数据库“ root”时,Halil的答案是正确的。

但是,如果要连接到数据库“ nodekb”而不是“ root”,则应首先在数据库“ nodekb”上运行“ db.createUser()”命令(https://docs.mongodb.com/manual/reference/method/db.createUser/index.html)。不幸的是,无法在“ docker-compose.yml”中进行设置。