[英]Docker-compose MongoDB replicaset with admin user
我正在努力尋找一個簡單的配置,它使用 docker-compose 提供單節點副本集和 mongo-express,並啟用管理員身份驗證。 我被困在這里:
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
注意: MONGO_INITDB_ROOT_USERNAME
和MONGO_INITDB_ROOT_PASSWORD
不在mongo
環境中,因為它們被忽略了。
您應該等待副本集被啟動。 像這樣的東西,例如:
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.