Sommaire
On va maintenant rentrer dans les choses sérieuses de notre tutoriel, on va commencer par installer l’image Docker Gitlab.
En faite, il n’y a rien de compliquer, il y a juste une commande à passer et oui, c’est tout l’intérêt d’utiliser Docker, mais je vais vous expliquer ce que fait la commande, car faire c’est bien, comprendre c’est encore mieux.
Voici la commande que nous allons passer pour installer notre conteneur GitLab :
La première ligne permet de démarrer le conteneur docker-run
et le paramètre --detach
ou -d
permet de lancer en arrière-plan, sans ce paramètre le conteneur va être lié au terminal et donc s’arrête quand vous fermerez la session.
La seconde ligne permet de spécifier le nom de l’hôte --hostname gitlab.rdr-it.local
La troisième ligne indiquer la publication des ports avec les paramètres --publish
ou -p
. Dans l’exemple je mappe le port 31443 de l’hôte (Ubuntu) sur le port 443 du conteneur et ainsi de suite. Dans la théorie, je pourrais accéder à gitlab par https://ip_du_serveur:31443
La quatrième ligne avec le paramètre --name
, indiquer le nom du conteneur au niveau de l’hôte.
La cinquième ligne --restart always
permet d’indiquer de toujours démarrer le conteneur.
De la sixième ligne à la huitième, on configure les redirections de dossier à l’aide du paramètre --volume
. La première partie correspond au dossier sur l’hôte (Ubuntu) et la seconde après le :
le dossier de l’image du conteneur.
La dernière ligne gitlab/gitlab-ce:latest
est l’image que l’on souhaite récupérer sur Docker Hub.
Maintenant que vous savez ce que fait la commande, on peut passer à l’installation de notre conteneur.
Avant, on va créer les dossiers sur le serveur
Installer le conteneur gitlab, adapter à votre environnement :
Patienter pendant le téléchargement et la configuration du conteneur Gitlab …
L’installation de l’image est terminée quand on récupère la main sur la console.
Pour vérifier le bon fonctionne de l’image Gitlab entrer la commande ci-dessous :
sudo docker ps
On voit bien le conteneur avec le status UP et on peut voir également le mappage de port.
Depuis l’interface Cockpit, on peut aussi voir le status du conteneur.
Si on regarde dans les dossiers que l’on a créés pour les volumes, on peut voir que des fichiers et dossiers ont été créés, donc la redirection fonctionne.
Maintenant que notre image est installée, on va configurer Nginx en tant que reverse proxy.
Normalement Gitlab devrait être disponible sur le port 31080, mais je vous déconseille de procéder à sa configuration en passant par le port de l’hôte.
Dans le dossier /etc/nginx/sites-available
créer un fichier nano
et utiliser la configuration ci-dessous :
Adapter à votre configuration la ligne 3 en indiquant l’URL de l’accès à l’application et la ligne 6 proxy_pass
en configurant le port qui correspond à votre conteneur.
Sauvegarder le fichier.
Créer un lien symbolique du fichier dans le dossier /etc/nginx/sites-enable/
.
sudo ln -s /etc/nginx/sites-available/<file-name> /etc/nginx/sites-enabled/
Vérifier la configuration de Nginx :
sudo nginx -t
Si tout est bon, recharger la configuration de nginx
sudo systemctl reload nginx
Depuis un navigateur, aller à l’url configuré dans nginx, vous devriez normalement arriver sur le formulaire de configuration du mot de passe du compte root de Gitlab.
Cas d’utilisation de l’HTTPS.
La première étape va être de générer un certificat SSL à l’aide de certbot, utiliser la commande ci-dessous et suivre l’assistant.
sudo certbot
Si tout se passe bien, un certificat Let’s Encrypt est généré et la configuration Nginx adapté à l’utilisation de l’HTTPS.
Pour fonctionner correctement, il faut modifier la configuration de Gitlab pour éviter les erreurs de « mixed content ». Pour le moment celui-ci est configuré en HTTP, il faut donc configurer Gitlab pour lui dire qu’il est accessible en HTTPS depuis le port 80 de son serveur Web.
Ouvrir le fichier gitlab.rb
qui se trouve dans /var/gitlab/config/
.
Dans le fichier de chercher les éléments de configuration ci-dessous et configurer les de la même façon sauf pour le paramètre external_url.
external_url 'https://git.example.com'
nginx['listen_port'] = 80
nginx['listen_https'] = false
Relancer la configuration de Gitlab :
sudo docker exec -it gitlab gitlab-ctl reconfigure
Adapter la commande à votre conteneur,
gitlab
après-it
correspond au nom du conteneur (--name
).
Je ne vous en ai pas encore parlé, la commande docker exec permet d’exécuter des commandes dans le conteneur.
À travers cette partie du tutoriel, on a vu comment installer un conteneur avec le mappage des ports réseau et des dossiers, comment créer une règle de reverse proxy avec Nginx et comment exécuter une commande dans un conteneur depuis l’hôte.