Construction du gestionnaire avec Docker
Nous allons installer NEXUS via Docker. Il faut donc connaître un peu Docker, avoir installé les outils nécessaires. Nous les verrons au fur et à mesure.
De base, NEXUS n’est pas pas packagé avec la gestion des paquets pour les distribution se basant sur débian (apt). Il existe un plugin nexus-repository-apt. Attention, le plugin n’est pas supporté par NEXUS, prenez vos responsabilités. Le conteneur contenant le plugin apt se sert du conteneur de base pour ajouter le plugin.
Il va falloir construire le conteneur à partir des sources sur github.
Pour cela, se placer à l’endroit désiré:
cd /home/pierre/Documents
Cloner le dépot officiel du plugin nexus-repository-apt, n’oubliez pas la ligne 2
git clone https://github.com/sonatype-nexus-community/nexus-repository-apt.git
cd nexus-repository-apt/
Se placer sur le bon tag, le master n’est pas nécessairement celui que vous voullez
git checkout UpdateToThreeDotFourteen
Lancer le build, n’oubliez pas le point à la fin de la ligne
docker build -t nexus-repository-apt:3.14.0 .
nexus-repository-apt
correspond au nom du conteneur construit localement3.14.0
correspond à la version
Lancer le conteneur
Directement via ligne de commande
docker run -d -p 8081:8081 --name nexus -v /media/raid5/nexus-data:/nexus-data nexus-repository-apt:3.14.0
-d
, faire tourner le docker en tant que daemon-p 8081:8081
, mappe le port 8081 de l’hôte au port 8081 dans le conteneur--name nexus
, nom du conteneur-v /media/raid5/nexus-data:/nexus-data
, mappe le répertoire /media/raid5/nexus-data de l’hôte au répertoire/nexus-data du conteneur. Docker se débrouille pour créer et monter le répertoire dans le conteneur. Nous faisons cela pour la persistance des donnéesnexus-repository-apt:3.14.0
nexus-repository-apt correspond au nom du conteneur construit localement, 3.14.0, correspond à la version
Vérifier que tous fonctionne bien:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36be3444152e nexus-repository-apt:3.14.0 "sh -c ${SONATYPE_DI…" 4 weeks ago Up 4 weeks 0.0.0.0:8081->8081/tcp nexus
Connectez-vous à votre gestionnaire de dépôt:
localhost:8081 ou ip-hote:8081
Via SystemD
Créer un service nexus à l’aide du fichier suivant (/etc/systemd/system/nexus.service)
[Unit]
Description=nexus docker service
After=syslog.target docker.service
[Service]
ExecStartPre=-/usr/bin/docker kill nexus
ExecStartPre=-/usr/bin/docker rm nexus
ExecStart=/usr/bin/docker run \
--name nexus \
--publish 8081:8081 \
--volume /media/raid5/nexus-data:/nexus-data \
nexus-repository-apt:3.14.0
ExecStop=-/usr/bin/docker stop nexus
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
ExecStartPre
, commande à lancer avant le start--name
, nom du conteneur, il doit être unique--publish
, mappage du port 8081 au port 8081 du conteneur, seul port ouvert du conteneur--volume
, mappe le répertoire /media/raid5/nexus-data de l’hôte au répertoire/nexus-data du conteneur. Docker se débrouille pour créer et monter le répertoire dans le conteneur. Nous faisons cela pour la persistance des données
Mise à jour de SystemD avec le nouveau service
systemctl daemon-reload
Permettre au service de démarrer lors du démarrage de la VM ou du PC
systemctl enable nexus.service
Mise à disposition derrière Apache
Créer le fichier de configuration d’Apache:
nano /etc/apache2/sites-available/exemple.com.conf
Contenu du fichier:
Protocols http/1.1
<VirtualHost *:80>
ServerAdmin contact@exemple.com
ServerName exemple.com
Redirect permanent / https://exemple.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<virtualhost>
<virtualhost *:443="">
ServerAdmin contact@exemple.com
ServerName exemple.com
Protocols h2 http/1.1
ErrorLog ${APACHE_LOG_DIR}/error_ssl.log
CustomLog ${APACHE_LOG_DIR}/access_ssl.log common
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/exemple.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/exemple.com/privkey.pem
AllowEncodedSlashes NoDecode
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://p-nexus:8081/ nocanon
ProxyPassReverse / http://p-nexus:8081/
<virtualhost>
ServerName
, nom du serveur sur internet ou dans votre réseauRedirect permanent
met en place une redirection permanente sur une connexion sécuriséProtocols
définit les protocoles disponible, nous indiquons ici que nous préférons utiliser http2
Voila, nexus est fonctionnel.
PS: une fois le conteneur monté, il faut attendre un peu que Nexus démarre. Ca prend un peu de temps, entre une minute pour un Nexus vierge à 20 minutes pour un Nexus avec des données