Sonatype Nexus per Docker starten und aktualisieren
Tags: cloud computing, Docker, linux
Kategorie Software Engineering | 1 Kommentar »
Ich nutze Docker, um auf meinem Entwicklungsrechner einige Hilfsdienste wie Jenkins oder Sonatype Nexus laufen zu lassen. Ich könnte die natürlich auch direkt in meinem System installieren, aber das ist mir meist zu kompliziert. Viel einfacher ist es, ein vorgefertigtes Docker Image zu nutzen und nur die Daten außerhalb des Containers zu speichern.
Leider vergesse ich immer wieder die Kommandos. Deshalb als Notiz für mich die wichtigsten Kommandos, um Sonatype Nexus per Docker zu betreiben.
Neuen Container mit Namen „nexus“ starten und Arbeitsdateien lokal speichern:
docker run -d -p 8081:8081 --name nexus -v /opt/docker-volumes/nexus-data:/sonatype-work sonatype/nexus3
Im Container startet Nexus und horcht auf Port 8081. Diesen gebe ich auch so an meinen Host weiter und kann dann die Nexus Oberfläche unter http://localhost:8081/nexus aufrufen.
Alle Einstellungen und die Nexus Repositories werden nicht im Container gespeichert, sondern auf meiner lokalen Platte. Dazu mappe ich das lokale Host Verzeichnis „/opt/docker-volumes/nexus-data“ in den Container an die Stelle „/nexus-data“. Das Nexus Image ist so konfiguriert, dass Nexus alle seine Dateien in genau diesem Verzeichnis ablegt.
Danach kann ich den Container über seinen Namen ansprechen, etwa zum Starten und Stoppen:
docker start nexus
docker stop nexus
Oder ich kann mir die Logdateien im Container anschauen:
docker logs nexus
Interessant ist noch das Upgrade des Images, falls es mal eine neue Version gibt. Ausgehend von einem laufendem Nexus Container geht das folgendermaßen:
docker pull sonatype/nexus3
docker stop nexus
docker rm nexus
docker run ... (wie oben)
Im ersten Schritt hole ich mir die neueste Version des Image. Dieser Schritt dauert am längsten, kann aber ausgeführt werden, während der Container noch läuft. Anschließend stoppe ich den Container, werfe ihn weg und erstelle den Container auf Basis des zuvor aktualisierten Image neu. Daten gehen keine verloren, da diese nicht im Container sondern auf meiner lokalen Platte liegen.
Der ganze Upgradevorgang (stop, rm, run) dauert weniger als eine Minute, falls mir die Befehle einfallen und ich nicht erst 10 Minuten googeln muss. Aber das sollte sich ja mit diesem Post erübrigt haben :-)
Und das passende Kommando für ElasticSearch wäre:
docker run -d -p 9200:9200 -p 9300:9300 –name elastic -v /opt/docker-volumes/elastic-data:/usr/share/elasticsearch/data elasticsearch