Docker составить пн go не создаст root пользователя - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать контейнер docker с изображением mon go. Я хочу, чтобы в контейнере был пользователь root с именем admin и возможность создавать базу данных с именем experts_db. Вот мой docker-compose.yaml:

version: '3.7'

services:
    mongodb:
        image: mongo:4.0.4
        container_name: mongodbtest
        restart: always
        env_file: .env
        environment:
            MONGO_INITDB_ROOT_USERNAME: admin
            MONGO_INITDB_ROOT_PASSWORD: 123456789
            MONGO_INITDB_DATABASE: experts_db
        ports:
            - 27017:27017
        volumes:
             - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

, а вот мой mongo-init.js файл:

use admin;

db.createUser(
        {
            user: "andrea",
            pwd: "123456789",
            roles: [
                "userAdminAnyDatabase",
                   "dbAdminAnyDatabase",
                   "readWriteAnyDatabase"

            ]
        }
);

Несмотря на это, когда я нахожусь в оболочке mon go и пытаюсь получить список всех пользователей, я получаю следующую ошибку:

use experts_db
switched to db experts_db
> db.getUsers()
2020-01-22T14:30:00.569+0000 E QUERY    [js] Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1763:1
@(shell):1:1

Кто-нибудь знает, почему это происходит? Я новичок в понедельник go и не понимаю, как я мог это исправить

1 Ответ

0 голосов
/ 22 января 2020

Я протестировал скрипт JS ниже и он работает как положено:

db.createUser(
{
    user: "aaa",
    pwd: "123",
    roles: [ { role: "readAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" }]
});

После создания вы можете запрыгнуть в оболочку mongoDB и запустить db.getUsers (), чтобы убедиться, что пользователь имеет был успешно создан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...