mongodb - Docker Compose MongoDB docker-entrypoint-initdb.d 不起作用

标签 mongodb docker mongoose docker-compose

我正在使用以下 docker-compose 文件

version: '3.7'
services:
 db_container:
  image: mongo:latest
  restart: always
  environment:
    MONGO_INITDB_ROOT_USERNAME: root
    MONGO_INITDB_ROOT_PASSWORD: password
    MONGO_INITDB_DATABASE: root-db
  ports:
    - 27017:27017
  volumes:
    - ./database/initdb.js:/docker-entrypoint-initdb.d/initdb.js:ro
    - ./data:/data/db

这是我的 initdb.js 文件
db.createUser(
{
  user: "api-test",
  pwd: "api-test",
  roles: [
    {
      role: "readWrite",
      db: "api-test"
    }
  ]
}
);

我只能看到 3 个数据库并且无法连接到 api-test D B

enter image description here

如果缺少什么,请帮助我

最佳答案

能够在以下文章的帮助下解决问题
Docker-Compose mongoDB Prod, Dev, Test Environment

文件结构应该是

Project
├── docker-compose.yml (File)
├── docker-entrypoint-initdb.d (Directory)
│   ├── mongo-init.js (File)

docker-compose.yml 文件
version: '3.7'

services:
   mongo:
    container_name: container-mongodb
    image: mongo:latest
    restart: always
    ports:
      - 27017:27017

    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
      MONGO_INITDB_DATABASE: root-db

    volumes:
      - ./docker-entrypoint-initdb.d/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

mongo-init.js 文件

print('Start #################################################################');

db = db.getSiblingDB('api_prod_db');
db.createUser(
  {
    user: 'api_user',
    pwd: 'api1234',
    roles: [{ role: 'readWrite', db: 'api_prod_db' }],
  },
);
db.createCollection('users');

db = db.getSiblingDB('api_dev_db');
db.createUser(
  {
    user: 'api_user',
    pwd: 'api1234',
    roles: [{ role: 'readWrite', db: 'api_dev_db' }],
  },
);
db.createCollection('users');

db = db.getSiblingDB('api_test_db');
db.createUser(
  {
    user: 'api_user',
    pwd: 'api1234',
    roles: [{ role: 'readWrite', db: 'api_test_db' }],
  },
);
db.createCollection('users');

print('END #################################################################');

关于mongodb - Docker Compose MongoDB docker-entrypoint-initdb.d 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60522471/

相关文章:

django - 潜在的 docker 权限问题导致枕头说它没有安装,尽管它是

node.js - 如何升级 docker 容器内的 npm?

javascript - Mongoose 嵌入式文档更新

javascript - Mongodb:无法使用字符串字段名称附加到数组

mongodb - ubuntu 11.10 64 位与 32 位

javascript - 如何使用 node-mongodb-native 连接到 Modulus.io?

docker - 'docker start' 是否执行CMD命令?

java - 如何在java中创建mongoDB objectid

arrays - Meteor、MongoDB通过订阅获取数组的一部分

javascript - 在 Mongoose 中定义变体类型