Docker создает с NodeJS / Mongo - секреты для пользователя базы данных в скрипте инициализации (не для администратора) - PullRequest
0 голосов
/ 19 октября 2019

Как я могу использовать секреты докера в файле initdb точки входа .js?

Я установил секреты для своего администратора:

mongo:
  /*...*/
  secrets:
    - MONGO_ROOT_USERNAME_SECRET
    - MONGO_ROOT_PASSWORD_SECRET
  environment:
    MONGO_INITDB_ROOT_USERNAME_FILE: /var/run/secrets/MONGO_ROOT_USERNAME_SECRET
    MONGO_INITDB_ROOT_PASSWORD_FILE: /var/run/secrets/MONGO_ROOT_PASSWORD_SECRET
    MONGO_INITDB_DATABASE: myDb
  volumes:
    - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

secrets:
  MONGO_ROOT_USERNAME_SECRET:
    file: secrets/mongo_root_username.txt
  MONGO_ROOT_PASSWORD_SECRET:
    file: secrets/mongo_root_password.txt

Могу ли я настроить одинаково secrets/mongo_db_username.txt и пароль, вложите его в секреты и используйте его как-нибудь в моем mongo_init.js, который выглядит как

db.createUser(
  {
      user: "devUser",        <---- want to use the secret here
      pwd: "devPw",           <---- want to use the secret here
      roles: [
          {
              role: "readWrite",
              db: "myDb"
          }
      ]
  }
)

РЕДАКТИРОВАТЬ:

Я нашел способ, используя

let username = cat('/var/run/secrets/MONGO_DB_USERNAME_SECRET');
let password = cat('/var/run/secrets/MONGO_DB_PASSWORD_SECRET');

В моем файле инициализации JS. Но есть ли более чистый путь?

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