简体   繁体   English

Docker-compose MongoDB 具有管理员用户的副本集

[英]Docker-compose MongoDB replicaset with admin user

I am struggling to find a simple configuration that deliver a single-node replica set and mongo-express with docker-compose, with admin authentication enabled.我正在努力寻找一个简单的配置,它使用 docker-compose 提供单节点副本集和 mongo-express,并启用管理员身份验证。 Here where I am stuck:我被困在这里:

docker-compose.yml

services:
  mongo:
    image: mongo:5.0.2-focal
    container_name: mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - ./scripts/mongo-init-rset.sh:/mongo-init-rset.sh
    command: ./mongo-init-rset.sh

  mongo-express:
    image: mongo-express
    container_name: mongo-express
    restart: always
    depends_on:
    - mongo
    ports:
        - ${MONGOEXP_PORT:-8081}:8081
    environment:
      ME_CONFIG_MONGODB_SERVER: mongo
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root

./scripts/mongo-init-rset.sh

#!/bin/bash

# NOTE: this script does not force Auth on Mongo, but will allow root and other users to authenticate.
# WARNING: unauthenticated users can still log in.

start_mongo() {
    mongod --replSet rs0 --bind_ip_all
}

activate_rs() {
    echo "Waiting for Mongo to start..."
    sleep 5
    echo "INITIATE REPLICA SET"
    mongosh --host mongo --eval "rs.initiate()"
    echo "MAKE ADMIN USER FOR REPLICA SET"
    mongosh --host mongo --eval "db.createUser({ user: \"root\", pwd: \"root\", roles: [ { role: \"root\", db: \"admin\" } ] });" admin
}

start_mongo & activate_rs

Note: MONGO_INITDB_ROOT_USERNAME and MONGO_INITDB_ROOT_PASSWORD are not in mongo environment since they were ignored.注意: MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD不在mongo环境中,因为它们被忽略了。

You should wait for replicaset to be initiated.您应该等待副本集被启动。 Something like this, for example:像这样的东西,例如:

rs.initiate()
rs.status()
while (! db.isMaster().ismaster ) { sleep(1000) }
// Now you can create the admin user

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM