Einfaches 5-Minuten-Sonatype-Nexus-OSS-Setup mit Docker-Registry mit docker-compose und Traefik-Reverse-Proxy

English Deutsch

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

init_nexus.sh
#!/bin/sh
mkdir nexus_data
chown -R 200 nexus_data

Erstellen Sie dann docker-compose.yml und geben Sie Ihre Domain, Resolver usw. in den Traefik-Labels ein:

docker-compose.nexus.yml
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.sh
docker-compose up -d

Warten Sie, bis der Container gestartet ist, und rufen Sie dann das anfängliche Admin-Passwort ab mit

get_nexus_admin_password.sh
docker-compose exec nexus cat /nexus-data/admin.password

Gehen 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.

Sonatype Nexus - Docker-Repository erstellen

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).

Sonatype Nexus - Docker-Repository konfigurieren

Nun können Sie z. B. mit

docker_login_registry.sh
docker login registry.mydomain.com

darauf 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.


Check out similar posts by category: Docker