f3l1x

Sonatype Nexus Repository: OrientDB a H2

nexus docker

Sonatype Nexus je univerzální uložiště pro APT, NPM, Docker a spoustu dalších balíčků. Funguje cloudově, dá se i selfhostovat.

image

Pokud hledáte privátní uložiště, doporučuje Nexus vyzkoušet. Pokud byste ho snad chtěli vykoušet provozovat v Dockeru, což osobně delám už zhruba 5 let, tak můžete vyzkoušet můj předpřipravný Docker image. Řeší pár specialit, jako třeba oprávnění, takže nemusíte nic řešit.

docker run \
	-it \
	--rm \
	-p 8081:8081 \
	-v $(pwd)/data:/nexus-data \
	dockette/nexus:3.71.0-java17-ubi

https://github.com/dockette/nexus

Od verze 3.71.0 došlo celkem k revoluci, kdy interně kompletně odstranili OrientDB a podporovaná databáze je pouze H2 a nebo Postgres. Postgres bohužel až v placené verzi.

Od Sonatype existuje celkem dobře popsaný migrační manuál. Kdo by přesto tápal jak to provést, hodím sem pár tipů.

Zdroje

Kroky

  1. Aktualizovat Nexus na poslední verzi 3.70.x.

  2. Provést manuální zálohu (Admin → Tasks → Admin - Export databases for backup).

  3. Nastavit location např. na /nexus-data/db-backup.

image

  1. Stopnout běžící Nexus (ale to je asi jasný, že jo).

  2. Stáhnout příslušný migrátor. Pozor na to, aby to byla verze 3.70.x.

  3. Stáhnout do složky, kde máte data a nebo docker-compose.yml.

sudo curl -L https://download.sonatype.com/nexus/nxrm3-migrator/nexus-db-migrator-3.70.1-03.jar -o nexus-db-migrator.jar
  1. Spustit Nexus s přepsaným entrypointem. Ať můžeme spustit migrátor.

  2. Spustíme docker kontejner.

docker run \
	-it \
	--rm \
	-v $(pwd)/data/nexus:/nexus-data \
	-u root \
	--entrypoint bash \
	dockette/nexus:3.71.0-java17-ubi
  1. Ve složce /nexus-data/db-backup , kde máme uložené zálohy z předchozího kroku, spustíme migrátor.
java \
	-Xmx16G \
	-Xms16G \
	-XX:+UseG1GC \
	-XX:MaxDirectMemorySize=28672M \ 
	-jar nexus-db-migrator.jar \ 
	--migration_type=h2
  1. Výstupní soubor /nexus-data/db-backup/nexus.mv.db přesuneme do /nexus-data/db/nexus.mv.db a nastavíme oprávnění sudo chown 200:200 nexus.mv.db.
  2. Upravíme /nexus-data/etc/nexus.properties soubor.
nexus.datastore.enabled=true
  1. Et voilà, máme hotovo. Spustíme Sonatype Nexus standardním způsobem.

Troubleshooting

Verze 3.71.x má aktuálně problém s autoincrementem v H2 databázi. Lze to jednoduše vyřešit přes script.

  1. Vytvořit migrator.sh script.

  2. Spustit Nexus s přepsaným entrypointem.

docker run \
	-it \
	--rm \
	-v $(pwd)/data/nexus:/nexus-data \
	-v $(pwd)/migrator.sh:/migrator.sh \
	-u root \
	--entrypoint bash \
	dockette/nexus:3.71.0-java17-ubi

Spustit sh migrator.sh a výstup bude zhruba následovný.

image

Doufám, že vám Nexus bude sloužit dobře. Dejte vědet.

esc

Type to search. ↑ ↓ to move, ↵ to open.