我正在尝试使用docker compose与MongoDB和mongo-express创建一个MongoDB集群。我可以很好地创建集群,但我需要一个单节点副本集,以便为我的应用程序启用更改流。目标是让docker compose在运行集群后自动创建副本集,而不需要进入mongo shell。
我一直在努力寻找一个可行的例子。我找到的最好的是here,但它不适合我。mongo容器启动失败。
这是我的docker_compose.yml文件:
version: "3"
services:
mongodb:
image: mongo
container_name: mongodb
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=rootuser
- MONGO_INITDB_ROOT_PASSWORD=rootpass
volumes:
- ./.docker/mongodb/mongod.conf:/etc/mongod.conf
- ./.docker/mongodb/initdb.d/:/docker-entrypoint-initdb.d/
- ./.docker/mongodb/data/db/:/data/db/
- ./.docker/mongodb/data/log/:/var/log/mongodb/
healthcheck:
test: test $$(echo "rs.initiate().ok || rs.status().ok" | mongo -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet) -eq 1
interval: 10s
start_period: 30s
command: ["/usr/bin/mongod -f", "/etc/mongod.conf", "--replSet", "rs0", "--bind_ip_all"]
mongo-express:
image: mongo-express
container_name: mongo-express
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser
- ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
- ME_CONFIG_MONGODB_SERVER=mongodb
networks:
default:
name: mongo-express-network
volumes:
mongodb-data:
driver: local根据上面链接的帖子,魔力应该在command中,但它就是不起作用,我已经尝试过了。如果我去掉它,我得到了一个有效的mongo和mongo-express集群。但没有副本集。
顺便说一下,如果我进入shell并运行:
# mongod -f /etc/mongod.conf --replSet rs0 --bind_ip_all
Error opening config file: Is a directory
try 'mongod --help' for more information
#mongod.conf是否位于其他位置?
任何帮助这项工作,将非常感谢!
发布于 2021-05-28 10:07:30
mkdir initdb.d
echo 'rs.initiate()' |tee initdb.d/rs.js
docker run -itv `pwd`/initdb.d:/docker-entrypoint-initdb.d/:ro -p 27017:27017 mongo --replSet myrs --bind_ip_all是不是mongod.conf在别的地方?
图像上没有,所以如果你创建了它,它就会在你放置它的任何地方。
https://stackoverflow.com/questions/67731307
复制相似问题