
Пытаюсь обновить mongodb в моем контейнере docker с 3.6 до 4.2 с помощью ansible, но контейнер docker продолжает перезапускаться.
Причина перезапуска в том, что уровень совместимости установлен на 3.6.
А именно:
IMPORTANT: UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document(ERROR: BadValue: Invalid value for version, found 3.6, expected '4.2' or '4.0'. Contents of featureCompatibilityVersion document in admin.system.version: { _id: "featureCompatibilityVersion", version: "3.6" }. See http://dochub.mongodb.org/core/4.0-feature-compatibility.). If the current featureCompatibilityVersion is below 4.0, see the documentation on upgrading at http://dochub.mongodb.org/core/4.0-upgrade-fcv.
Как обновить этот документ?
Попробовал запустить ansible post-build команду (назовем ее так), которая выглядит так:
- name: set compatibility level
state: started
shell: "docker exec mongodb-primary bash -c 'mongo --eval \"db.adminCommand( { setFeatureCompatibilityVersion: \"4.2\" } )\"'"
become: True
become_user: root
register: result
А также перепробовал кучу других вариантов, все без надежды.
И этот скрипт ansible не работает, так как не может подключиться к mongo. Соединение отклонено, говорит он. Mongo еще не запущен, я так полагаю.
Итак, как на самом деле обновить mongo в контейнере docker с 3.6 до 4.2? Используя ansible и docker-compose.
решение1
Решил эту проблему, обновив до 4.0, затем установив featureCompatibilityVersion на 4.0, затем снова обновив до 4.2, затем установив featureCompatibilityVersion на 4.2
решение2
Да, с MongoDB вы не можете перейти с версии 3.6 на 4.2 за одно обновление, вам придется переходить на следующую версию и так далее, пока не получите нужную вам версию.