Я использую поток изменений MongoDB в своем коде и мне нужно создать образ докера MongoDB с включенным потоком изменений.Проблема в том, что сначала нужно запустить mongod с настройками по умолчанию, чтобы разрешить создание пользователей, документов и т. Д. Затем следует остановить mongod.Затем набор реплик должен быть добавлен в mongod.conf для включения потока изменений:
# mongod.conf
replication:
replSetName: rs0
oplogSizeMB: 100
После этого mongod должен быть снова запущен и набор реплик инициализирован оболочкой MongoDB:
rs.slaveOk()
rs.initiate()
rs.initiate({_id:"rs0", members: [{"_id":1, "host":"127.0.0.1:27017"}]})
MogodDB 3.6 базовый образ обеспечивает возможности инициализации.Вы знаете, как запустить mongod, инициализировать базу данных, затем остановить ее и перенастроить?
UPD: мне нужно инициализировать базу данных, затем добавить набор реплик.Поэтому мне нужно запустить nongod с mongod.conf по умолчанию, создать пользователей и коллекции, затем перезапустить mongod с другим mongod, в котором включен набор реплик.Я не могу сделать это с официальным изображением MongoDB.Я установил MongoDB 3.6.12 на образ Ubuntu.Мой контейнер MongoDB работает хорошо после запуска команд установки вручную в своей оболочке bash, но те же инструкции не работают из Dockerfile. Вот команды
RUN mongod --fork --config /etc/mongod.conf \
&& mongo < /opt/init_mongodb.js \
&& mongod --shutdown --dbpath /var/lib/mongodb \
&& cp /etc/mongod.conf /etc/mongod.conf.orig \
&& mongod --fork --config /opt/mongod.conf \
&& mongo -u "root" -p "root" --authenticationDatabase "admin" < /opt/reconfig_mongodb.js \
При запуске этих команд из Dockerfile появляется следующая ошибка
> backend@1.0.0 start /usr/src/app
> npm run babelserver
> backend@1.0.0 babelserver /usr/src/app
> babel-node --presets es2015 index.js
(node:41) UnhandledPromiseRejectionWarning: MongoError: not master and slaveOk=false
at queryCallback (/usr/src/app/node_modules/mongodb-core/lib/cursor.js:248:25)
at /usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:532:18
at processTicksAndRejections (internal/process/task_queues.js:82:9)
(node:41) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)