【问题标题】:Docker Compose MongoDB docker-entrypoint-initdb.d is not workingDocker Compose MongoDB docker-entrypoint-initdb.d 不工作
【发布时间】:2020-03-04 09:07:45
【问题描述】:

我正在使用以下 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 DB

如果有什么遗漏请帮助我

【问题讨论】:

  • 您没有api-test 数据库。您需要先创建吗?
  • @Valijon 我试图实现每当我运行 docker-compose up 命令时,它应该使用 api-test 数据库和用户在 docker 中创建 mongob 映像
  • 尝试将MONGO_INITDB_DATABASE: root-db 更改为MONGO_INITDB_DATABASE: api-testsource
  • 我试过了,即使我在 MongoDB 罗盘中看不到 root-db 也不起作用
  • 甚至没有this?尝试进入docker镜像里面手动运行,可能是权限问题

标签: mongodb docker mongoose docker-compose


【解决方案1】:

可以借助以下文章解决问题 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 #################################################################');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2020-06-12
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多