【问题标题】:How to start mongo docker image with db user and password如何使用 db 用户和密码启动 mongo docker 映像
【发布时间】:2018-10-19 11:09:36
【问题描述】:

我正在尝试 docker 化我的 nodejs/mongodb/mongoose 应用程序。 在我的 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 up 吗? 我猜想使用 COPY 命令很容易注入 mongo 配置,但是我如何告诉图像使用它呢?

提前谢谢大家。

【问题讨论】:

  • docker镜像页面有带环境变量的配置示例:hub.docker.com/_/mongo
  • 可以传递用户名密码和dbname的环境变量,也可以使用volume来设置配置
  • 说 Docker 没有参与,但是 MongoDB 安装太大而无法适应您的开发系统,您必须在其他地方运行它。你会如何配置它?

标签: javascript node.js mongodb docker


【解决方案1】:

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

基本设置如下所示。

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

【讨论】:

  • 嗨 Halil,感谢您的 sn-p,但是是的,我知道文档中的这个 sn-p。但我仍然收到身份验证失败错误。所以我所做的是:我已经将这些行放入我的 docker-compose.yml 并进行了 docker-compose build 和 docker-compose up,我还使用 3T 通过 UI 访问 mongodb,并且我创建了一个用户......再次提到步骤,同样的问题
  • 我猜这与此有关:“请注意,如果您使用已经包含数据库的数据目录启动容器,则以下变量都不会产生任何影响:任何预先存在的容器启动时数据库将始终保持不变。”
  • 您好,我检查了我共享的 sn-p,我发现我已经共享了 mongo-express lib。我已经更正了,你可以试试更新的吗?我刚才在我的本地环境中进行了尝试,并且身份验证按预期工作。请您尝试告知一下好吗?
  • 在docker-compose.yml中添加环境变量后不要忘记docker-compose build && docker-compose up
【解决方案2】:

当你想连接到数据库“root”时,Halil 的回答是正确的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多