我想使用在docker中运行的独立实例创建MongoDB副本集,以便能够处理多文档事务。
问题在于副本集不是自动启动的,我总是必须手动启动它,因此无法在gitlabRunner中运行它。
我的Dockerfile如下:
FROM mongo:4.2
RUN echo "rs.initiate({'_id':'rs0','members':[{'_id':0,'host':'127.0.0.1:27017'}]});" > /docker-entrypoint-initdb.d/replica-init.js
RUN chmod u+x /docker-entrypoint-initdb.d/replica-init.js
RUN cat /docker-entrypoint-initdb.d/replica-init.js
CMD [ "--bind_ip_all", "--replSet", "rs0" ]
这是docker-compose代码段:
mongo:
build:
context: .
dockerfile: docker/mongo/Dockerfile
command: --replSet rs0
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
ports:
- 27017:27017
我将此脚本放入docker-entrypoint-initdb.d中,因此它应在第一个容器启动时自动运行,但不会发生。
如果我使用mongo shell手动运行相同的initialize()命令-那么它将正常工作。
关于我做错什么的任何想法吗?