首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-编写mongodb新实例不起作用

docker-编写mongodb新实例不起作用
EN

Stack Overflow用户
提问于 2019-10-22 06:23:15
回答 1查看 592关注 0票数 2

试图使码头-组成与以下内容:

代码语言:javascript
复制
    version: '3.1'

    services:
      mongo:
        image: mongo
        container_name: mongo-db
        networks:
          - mongo
        restart: always
        environment:
          MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER}
          MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
          MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
        ports:
          - 27017:27017
        volumes:
          - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
      mongo-express:
        image: mongo-express:latest
        container_name: mongo-express
        restart: always
        networks:
          - mongo
        depends_on:
          - mongo
        ports:
          - 8081:8081
        environment:
          ME_CONFIG_MONGODB_SERVER: mongo
          ME_CONFIG_MONGODB_PORT: 27017
          ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGO_ROOT_USER}
          ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGO_ROOT_PASSWORD}

入口点js文件如下所示:

代码语言:javascript
复制
db.createUser(
    {
        user: "dba",
        pwd: "dba",
        roles: [
            {
                role: "readWrite",
                db: "mydb"
            }
        ]
    }
);

变量在.env文件中定义如下:

代码语言:javascript
复制
MONGO_ROOT_USER=root
MONGO_ROOT_PASSWORD=root
MONGO_INITDB_DATABASE=mydb
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev

当我登录到mongo-express时,没有看到由mongo-init.js创建的用户或db,如果我尝试使用以下方式连接,则无法登录:

代码语言:javascript
复制
docker exec -it mongo-db mongo --username dba

但是,如果我使用以下方法,我可以连接,但在运行show dbs时仍然看不到mydb:

代码语言:javascript
复制
docker exec -it mongo-db mongo --username root

这里发生了什么事?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 06:35:44

我认为你需要将环境管理系统改为:

代码语言:javascript
复制
MONGO_INITDB_ROOT_USERNAME  
MONGO_INITDB_ROOT_PASSWORD

这些变量用于连接,创建一个新用户并设置该用户的密码。这个用户是在管理身份验证数据库中创建的,并给出了root的角色,它是一个“超级用户”角色。

文档

另一个注意事项:

如果不使用JavaScript文件插入数据,则不会创建数据库。

MONGO_INITDB_DATABASE 这个变量允许您指定数据库的名称,以便在/docker initdb.d/*..js中创建脚本(请参见下面初始化一个新实例)。MongoDB基本上是为“先使用就创建”而设计的,因此如果您不使用JavaScript文件插入数据,那么就不会创建数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58498173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档