Aller au contenu
Développement medium

Installer Nexus Repository en conteneur

8 min de lecture

Logo Nexus

Le moyen le plus rapide et le plus reproductible de faire tourner Nexus Repository est le conteneur : une image officielle, un volume pour les données, et Nexus est prêt en quelques minutes. Ce guide déploie Nexus Community Edition 3.77 avec Docker Compose, récupère le mot de passe admin initial et vérifie l'état du service par son API. Public visé : débutant à intermédiaire. Toutes les commandes ont été validées sur Nexus 3.77.1.

  • Déployer Nexus en conteneur avec une image épinglée.
  • Persister les données dans un volume dédié.
  • Récupérer le mot de passe admin initial.
  • Vérifier que Nexus est prêt via son API de statut.
  • Docker et Docker Compose installés.
  • Environ 2 Go de RAM disponibles pour la JVM de Nexus.

On décrit le service dans un compose.yaml. Deux points comptent : l'image est épinglée à une version précise (jamais latest), et les données vont dans un volume nommé pour survivre au redémarrage du conteneur.

compose.yaml
services:
nexus:
image: sonatype/nexus3:3.77.1
container_name: nexus
ports:
- "8081:8081"
environment:
# Borne la mémoire de la JVM pour éviter les arrêts brutaux au démarrage.
INSTALL4J_ADD_VM_PARAMS: "-Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g"
volumes:
- nexus-data:/nexus-data
restart: unless-stopped
volumes:
nexus-data:

Lancez le conteneur :

Fenêtre de terminal
docker compose up -d

Nexus met 1 à 3 minutes à démarrer au premier lancement, le temps d'initialiser sa base et ses dépôts par défaut. Son API de statut répond 200 quand il est prêt. On peut donc attendre proprement sans deviner :

Fenêtre de terminal
until curl -sf http://localhost:8081/service/rest/v1/status >/dev/null; do
echo "Nexus démarre..."; sleep 6
done
echo "Nexus est prêt"

Une fois prêt, l'interface est disponible sur http://localhost:8081.

À la première installation, Nexus génère un mot de passe admin aléatoire qu'il écrit dans un fichier à l'intérieur du conteneur. On le lit avec docker exec :

Fenêtre de terminal
docker exec nexus cat /nexus-data/admin.password
ff5f64b0-0600-4f87-9b41-c0c27d1c40a7

Ce mot de passe sert à la première connexion avec l'utilisateur admin.

Ouvrez http://localhost:8081 et cliquez sur Sign In en haut à droite. La fenêtre de connexion rappelle d'ailleurs l'emplacement du mot de passe initial. Saisissez admin et le mot de passe lu à l'étape précédente :

Fenêtre de connexion Nexus avec les champs identifiant et mot de passe

Un assistant en trois étapes se lance alors. Il vous impose de changer le mot de passe admin, puis de choisir la politique d'accès anonyme :

  • Activer l'accès anonyme : n'importe qui peut chercher, parcourir et télécharger sans identifiant. Pratique en lab, à réserver aux dépôts publics.
  • Désactiver l'accès anonyme : chaque client et chaque outil de build devra s'authentifier. C'est le réglage attendu en entreprise.

Au-delà du statut 200, l'API confirme la version et liste les dépôts par défaut créés à l'initialisation. Nexus arrive avec des dépôts prêts à l'emploi pour Maven, npm, PyPI, NuGet et Docker :

Fenêtre de terminal
curl -s -u admin:VOTRE_MDP http://localhost:8081/service/rest/v1/repositories \
| jq -r '.[] | "\(.type)\t\(.format)\t\(.name)"'
proxy maven2 maven-central
group maven2 maven-public
hosted maven2 maven-releases
proxy npm npm-public-proxy
proxy pypi pypi-public-proxy

Ces dépôts illustrent les trois types de Nexus : un proxy met en cache un dépôt public, un hosted stocke vos artefacts privés, un group agrège plusieurs dépôts derrière une seule URL. Les guides suivants exploitent ces types pour un cache et un registre Docker.

Comprendre ce point est essentiel pour la sauvegarde. Nexus range les fichiers (les .jar, .whl, couches d'image) dans un blob store, distinct de la base de données qui, elle, garde les métadonnées (quel composant, quelle version, quel dépôt). Le volume /nexus-data que vous avez monté contient les deux.

Dans Administration, Blob Stores, vous voyez le blob store default (type File), son nombre d'objets, sa taille et l'espace disque restant :

Liste des blob stores dans Nexus : le blob store default de type File avec sa taille et l'espace disponible

SymptômeCause probableSolution
Le conteneur s'arrête au démarrageMémoire insuffisanteVérifier la RAM libre, garder -Xms/-Xmx à 2g
admin.password introuvableInstance déjà initialiséeLe mot de passe a été changé ; le fichier disparaît après la première connexion
L'API répond 404Mauvais port publiéVérifier docker port nexus et l'URL
Données perdues au redémarrageVolume non montéConfirmer le volume nommé nexus-data:/nexus-data
  • Nexus se déploie proprement en conteneur avec une image épinglée (sonatype/nexus3:3.77.1).
  • Les données vivent dans un volume nommé /nexus-data, à préserver.
  • Nexus démarre en 1 à 3 minutes ; l'API /service/rest/v1/status signale la disponibilité.
  • Le mot de passe admin initial se lit dans /nexus-data/admin.password et doit être changé à la première connexion.
  • Nexus crée des dépôts par défaut illustrant les types proxy, hosted et group.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn