通过docker-compose创建MongoDB数据库

时间:2019-09-05 05:50:01

标签: mongodb docker-compose

docker-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容器中,但不执行 我的理解是docker-entrypoint-initdb.d/中的文件(* .js)被执行了,但是通过上面的设置却没有执行

有人知道我想念什么吗?

也在我发现的一些帖子中

environment:
      MONGO_INITDB_ROOT_USERNAME: test
      MONGO_INITDB_ROOT_PASSWORD: test
      MONGO_INITDB_DATABASE: admin

在执行.js fils之前,我是否需要添加root用户?

1 个答案:

答案 0 :(得分:0)

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

要解决此问题,请在您的js文件中使用以下语法:

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

在编辑完两个文件之后,请使用docker-compose up -d启动服务。再次检查日志,您将看到文件已成功执行。