【发布时间】:2020-08-12 14:38:50
【问题描述】:
我想创建一个带有 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-382072843 https://github.com/docker-library/mongo/issues/249#issuecomment-381786889
【问题讨论】:
-
有趣的事实是,如果我只使用带有
docker build -t db .; docker run -p 27017:27017 -d db的 Dockerfile 一切都很好,但使用 docker-compose 就不起作用了。 -
可以使用您正在使用的
docker和docker-compose的版本以及您正在运行的操作系统的详细信息来更新您的帖子吗?我在 Ubuntu 18.04 上有docker-compose version 1.24.0, build 0aa59064和docker客户端20.10.5/ 服务器19.03.13使用您的规格,这似乎不是问题。
标签: mongodb docker docker-compose replicaset