Einfaches 5-Minuten-Sonatype-Nexus-OSS-Setup mit Docker-Registry mit docker-compose und Traefik-Reverse-Proxy
Sonatype Nexus OSS ist ein Open-Source-Multi-Repository-Manager. Er kann unter anderem zum Hosten von Docker-Images verwendet werden. Dieser Leitfaden zeigt Ihnen, wie Sie in nur 5 Minuten eine Sonatype-Nexus-OSS-Instanz mit einer Docker-Registry einrichten.
Führen Sie zuerst im Verzeichnis, in dem Nexus liegen soll, dieses Initialisierungsskript aus
#!/bin/sh
mkdir nexus_data
chown -R 200 nexus_dataErstellen Sie dann docker-compose.yml und geben Sie Ihre Domain, Resolver usw. in den Traefik-Labels ein:
services:
nexus:
image: sonatype/nexus3
restart: unless-stopped
volumes:
- "./nexus_data:/nexus-data"
labels:
- "traefik.enable=true"
# Nexus (main webinterface)
- "traefik.http.routers.nexus-mydomain.rule=Host(`nexus.mydomain.com`)"
- "traefik.http.routers.nexus-mydomain.entrypoints=websecure"
- "traefik.http.routers.nexus-mydomain.tls.certresolver=cloudflare-ec384"
- "traefik.http.routers.nexus-mydomain.tls.domains[0].main=mydomain.com"
- "traefik.http.routers.nexus-mydomain.tls.domains[0].sans=*.mydomain.com"
- "traefik.http.services.nexus-mydomain.loadbalancer.server.port=8081"
- "traefik.http.routers.nexus-mydomain.service=nexus-mydomain"
- "traefik.http.middlewares.nexus-mydomain-compress.compress=true"
- "traefik.http.routers.nexus-mydomain.middlewares=nexus-mydomain-compress"
# Docker registry (runs on separate port 8089 and needs to be configured in Nexus first
- "traefik.http.routers.registry-mydomain.rule=Host(`registry.mydomain.com`)"
- "traefik.http.routers.registry-mydomain.entrypoints=websecure"
- "traefik.http.routers.registry-mydomain.tls.certresolver=cloudflare-ec384"
- "traefik.http.routers.registry-mydomain.tls.domains[0].main=mydomain.com"
- "traefik.http.routers.registry-mydomain.tls.domains[0].sans=*.mydomain.com"
- "traefik.http.services.registry-mydomain.loadbalancer.server.port=8089"
- "traefik.http.routers.registry-mydomain.service=registry-mydomain"
- "traefik.http.middlewares.registry-mydomain-compress.compress=true"
- "traefik.http.routers.registry-mydomain.middlewares=nexus-mydomain-compress"Starten Sie nun den Container
docker-compose up -dWarten Sie, bis der Container gestartet ist, und rufen Sie dann das anfängliche Admin-Passwort ab mit
docker-compose exec nexus cat /nexus-data/admin.passwordGehen Sie nun zu https://nexus.mydomain.com und melden Sie sich mit dem Admin-Passwort an.
Konfigurieren Sie nun ein Repository, indem Sie auf das Zahnrad-Symbol in der oberen rechten Ecke klicken, dann Repositories, dann Create repository, dann Docker (hosted), füllen Sie dann die Details aus und speichern Sie.

Aktivieren Sie nun HTTP, da es hinter einem Reverse-Proxy läuft, und setzen Sie dann den Port auf 8089 (dies ist kein spezieller Port, sondern nur der, den wir im sekundären Traefik-Router in den Traefik-Labels in docker-compose.yml konfiguriert haben).

Nun können Sie z. B. mit
docker login registry.mydomain.comdarauf zugreifen und Ihre Nexus-Anmeldeinformationen dafür verwenden.
Beachten Sie, dass Sonatype Nexus unter https://nexus.techoverflow.net läuft, die Registry aber unter https://registry.techoverflow.net (oder was auch immer Ihre Domain ist). Dies gilt nicht für alle Repository-Typen, aber für Docker müssen wir eine Dual-Domain-Konfiguration verwenden.