Sonatype Nexus OrientDB zu H2 Migration in einem docker-compose-basierten Setup
Basierend auf den offiziellen Sonatype-Migrationsanweisungen, aber für Docker und unsere 5-Minuten-Nexus-Konfiguration angepasst
Während ich PostgreSQL gegenüber H2 bevorzugen würde, erfordert es anscheinend eine Nexus-Pro-Lizenz, um PostgreSQL zu verwenden, also sind wir hier auf H2 beschränkt.
mkdir -p nexus_logs nexus_sonatype_logs
chmod -R 777 nexus_logs nexus_sonatype_logsÄndern Sie docker-compose.yml:
services:
nexus:
image: sonatype/nexus3:3.70.0
# ...
volumes:
- "./nexus_data:/nexus-data"
- "./nexus_sonatype_logs:/opt/sonatype/logs"
- "./nexus_logs:/logs"
# ...Starten Sie Nexus neu:
docker-compose up -dFühren Sie ein vollständiges Nexus-Backup durch mit der Backup-Aufgabe Nicht überspringen, dies ist erforderlich, damit der Migrator ausgeführt werden kann!
Als Backup-Speicherort verwenden Sie /nexus-data (da dies auf den Host gemountet ist und der Migrator Zugriff auf die Backup-Dateien benötigt).
Planen Sie die Backup-Aufgabe einmal, zwei Minuten in der Zukunft.
Warten Sie, bis sie fertig ist
Fahren Sie Nexus herunter:
docker-compose down -vLaden Sie das Migrator-Tool herunter. Sie müssen speziell die Migrator-Tool-Version 3.70 verwenden - spätere Versionen funktionieren NICHT mit OrientDB!
cd nexus_data
wget https://download.sonatype.com/nexus/nxrm3-migrator/nexus-db-migrator-3.70.2-01.jar
cd ..Führen Sie den Migrator aus
docker-compose run -u root nexus /bin/bash -c 'chmod 777 /opt/sonatype && chmod -R 777 /opt/sonatype/logs && cp /nexus-data/*.bak /opt/sonatype && java -Xmx16G -Xms16G -XX:+UseG1GC -XX:MaxDirectMemorySize=28672M -jar /nexus-data/nexus-db-migrator-* --migration_type=h2 -y && cp /opt/sonatype/nexus.mv.db /nexus-data/db'Fügen Sie jetzt die Datastore-Konfiguration zu nexus_data/etc/nexus.properties hinzu:
nexus.datastore.enabled=trueStarten Sie danach Ihren Nexus neu und überprüfen Sie, ob er funktioniert.
Nachdem Sie verifiziert haben, dass die Migration erfolgreich war, entfernen Sie die zusätzlichen Volumes aus docker-compose.yml:
- "./nexus_sonatype_logs:/opt/sonatype/logs" # Remove this line!
- "./nexus_logs:/logs" # Remove this line!entfernen Sie die tatsächlichen Verzeichnisse:
rm -rf nexus_sonatype_logs nexus_logsUnd starten Sie Nexus erneut:
docker-compose down
docker-compose up -dAußerdem können Sie jetzt auf 3.72.0 oder später aktualisieren (was OrientDB nicht mehr unterstützen würde), indem Sie die Image-Version in docker-compose.yml ändern:
image: sonatype/nexus3:3.72.0