尝试使用 ansible 将我的 docker 容器中的 mongodb 从 3.6 更新到 4.2,但 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 还没有起来,也就是说,我想。
那么,如何将 docker 容器中的 mongo 从 3.6 升级到 4.2?使用 ansible 和 docker-compose。
通过升级到 4.0,然后将 featureCompatibilityVersion 设置为 4.0,然后再次升级到 4.2,然后将 featureCompatibilityVersion 设置为 4.2 解决了这个问题