我正在努力尋找一個簡單的配置,它使用 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環境中,因為它們被忽略了。
uj5u.com熱心網友回復:
您應該等待副本集被啟動。像這樣的東西,例如:
rs.initiate()
rs.status()
while (! db.isMaster().ismaster ) { sleep(1000) }
// Now you can create the admin user
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410194.html
標籤:
上一篇:如何限制從同一服務器中的其他dockerized應用程式到dockerizedMongoDB的連接并拒絕對27017的公共訪問
