
Ich versuche, MongoDB in meinem Docker-Container mit Ansible von 3.6 auf 4.2 zu aktualisieren, aber der Docker-Container startet immer wieder neu.
Der Grund für den Neustart ist, dass der Kompatibilitätsgrad auf 3.6 eingestellt ist.
Genauer gesagt:
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.
Wie aktualisiere ich dieses Dokument?
Ich habe versucht, einen Ansible-Post-Build-Befehl (nennen wir ihn so) auszuführen, der so aussieht:
- 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
Ich habe auch eine Reihe anderer Optionen ausprobiert, alles ohne Erfolg.
Und dieses Ansible-Skript schlägt fehl, da es keine Verbindung zu Mongo herstellen kann. Die Verbindung wurde abgelehnt, heißt es. Das ist es, nehme ich an.
Wie kann man Mongo im Docker-Container tatsächlich von 3.6 auf 4.2 aktualisieren? Mit Ansible und Docker-Compose.
Antwort1
Dieses Problem wurde durch ein Upgrade auf 4.0, anschließendes Setzen von featureCompatibilityVersion auf 4.0, anschließendes erneutes Upgrade auf 4.2 und anschließendes Setzen von featureCompatibilityVersion auf 4.2 gelöst.
Antwort2
Ja, mit MongoDB können Sie nicht mit einem Update von 3.6 auf 4.2 springen, sondern müssen zur nächsten Version wechseln und so weiter, bis Sie die Version erhalten, die Sie benötigen.