首页 > 解决方案 > 通过 docker-compose 创建 MongoDB 数据库

问题描述

码头工人-compose.yml

mongo:
        image: mongo:3.4.13-jessie
        restart: always
        ports:
            - "27019:27017"
        volumes:
            - ./db1.js:/docker-entrypoint-initdb.d/db1.js:ro
            - ./db2.js:/docker-entrypoint-initdb.d/db2.js:ro

db1.js

use testdba;
db.getCollection("users").insert({
   "name": "A"
})

db2.js

use testdbb;
db.getCollection("users").insert({
   "name": "B"
})

文件被复制到 mongo 容器中但没有执行我的理解是里面的 files(*.js)docker-entrypoint-initdb.d/被执行了,但是通过上面的设置它不会

有谁知道我错过了什么?

在我发现的一些帖子中

environment:
      MONGO_INITDB_ROOT_USERNAME: test
      MONGO_INITDB_ROOT_PASSWORD: test
      MONGO_INITDB_DATABASE: admin

在执行 .js 文件之前是否需要添加 root 用户?

标签: mongodbdocker-compose

解决方案


MongoDB 找到您的文件并尝试执行它们,但它失败了。您可以在日志中看到:docker-compose logs -f并查找它尝试运行您的第一个 js 文件的行。

要修复它,请在 js 文件中使用以下语法:

db.testdba.getCollection("users").insert({
   "name": "A"
});

编辑两个文件后,使用docker-compose up -d. 再次检查日志,您将看到文件已成功执行。


推荐阅读