我想用Mongo实例创建一个Docker容器。特别是,我想创建一个只有一个节点的副本集(因为我对事务感兴趣,并且它们仅适用于副本集)。
Dockerfile
FROM mongo
RUN echo "rs.initiate();" > /docker-entrypoint-initdb.d/replica-init.js
CMD ["--replSet", "rs0"]
docker-compose.yml
version: "3"
services:
db:
build:
dockerfile: Dockerfile
context: .
ports:
- "27017:27017"
[如果我单独使用Dockerfile,一切都很好,但是如果我使用docker-compose,它将无法正常工作:实际上,如果我随后登录到该容器,则系统会提示我输入rs0:OTHER>
而不是rs0:PRIMARY>
。
我咨询了这些链接,但提出的解决方案无效:
https://github.com/docker-library/mongo/issues/246#issuecomment-382072843https://github.com/docker-library/mongo/issues/249#issuecomment-381786889
即使RS中只有一个节点,您仍然需要发出replSetInitiate。
另请参见here。