Sonatype Nexus OrientDB zu H2 Migration in einem docker-compose-basierten Setup

English Deutsch

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.

nexus_orientdb_migration.sh
mkdir -p nexus_logs nexus_sonatype_logs
chmod -R 777 nexus_logs nexus_sonatype_logs

Ändern Sie docker-compose.yml:

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:

restart_nexus.sh
docker-compose up -d

Fü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:

shutdown_nexus.sh
docker-compose down -v

Laden Sie das Migrator-Tool herunter. Sie müssen speziell die Migrator-Tool-Version 3.70 verwenden - spätere Versionen funktionieren NICHT mit OrientDB!

download_migrator.sh
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

run_migrator.sh
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.properties
nexus.datastore.enabled=true

Starten 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:

docker-compose.yml
    - "./nexus_sonatype_logs:/opt/sonatype/logs" # Remove this line!
    - "./nexus_logs:/logs" # Remove this line!

entfernen Sie die tatsächlichen Verzeichnisse:

remove_nexus_log_dirs.sh
rm -rf nexus_sonatype_logs nexus_logs

Und starten Sie Nexus erneut:

final_restart_nexus.sh
docker-compose down
docker-compose up -d

Auß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:

docker-compose.yml
    image: sonatype/nexus3:3.72.0

Check out similar posts by category: Docker, Nexus