简体   繁体   English

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

[英]Docker Compose MongoDB docker-entrypoint-initdb.d is not working

I am using following docker-compose file我正在使用以下 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

Here is my initdb.js file这是我的 initdb.js 文件

db.createUser(
{
  user: "api-test",
  pwd: "api-test",
  roles: [
    {
      role: "readWrite",
      db: "api-test"
    }
  ]
}
);

I can see only 3 databases and unable to connect to api-test DB我只能看到 3 个数据库并且无法连接到api-test DB

在此处输入图片说明

Please help me if something is missing如果缺少什么,请帮助我

Able to solve the issue with the help of the following article Docker-Compose mongoDB Prod, Dev, Test Environment能够借助以下文章Docker-Compose mongoDB Prod、Dev、Test Environment的帮助解决问题

The file structure should be文件结构应该是

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

docker-compose.yml 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 file 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 #################################################################');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 docker-compose mongodb访问/docker-entrypoint-initdb.d/脚本中的env变量 - docker-compose mongodb access env variables in /docker-entrypoint-initdb.d/ script Docker docker-entrypoint-initdb.d/ 带有 Mongodb 的脚本不起作用 - Docker docker-entrypoint-initdb.d/ scripts with Mongodb aren't working Docker MongoDB 当提供入口点时,图像不会在 docker-entrypoint-initdb.d 中运行脚本 - Docker MongoDB image doesn't run scripts in docker-entrypoint-initdb.d when entrypoint is supplied 重新创建MongoDB容器不会在docker-entrypoint-initdb.d中重新运行config.js文件 - Recreation of MongoDB container doesnt re-run config.js file in docker-entrypoint-initdb.d 使用 docker-entrypoint-initdb.d 创建的 Mongodb 用户不会保留在数据库中 - Mongodb user created with docker-entrypoint-initdb.d doesn't persist in the database 如何将环境变量传递给 mongo docker-entrypoint-initdb.d? - How can I pass environment variables to mongo docker-entrypoint-initdb.d? 存储 [main] 在 File::open() 中,::open for '/docker-entrypoint-initdb.d/create_user.js' 失败,权限被拒绝 - STORAGE [main] In File::open(), ::open for '/docker-entrypoint-initdb.d/create_user.js' failed with Permission denied MongoDB docker-entrypoint问题 - MongoDB docker-entrypoint issue docker-compose mongodb 新鲜实例不工作 - docker-compose mongodb fresh instance not working "码头工人组成:NodeJS + MongoDB" - Docker Compose : NodeJS + MongoDB
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM