LAB : Installation & Configuration SonarQube sur Docker#
Présentation#
Objectifs:#
- Installation de SonarQube
- Configuration basique de SonarQube
Prérequis#
- Connaissance de Docker
- Instance docker fonctionnel
- Editeur de code
- Utilitaire installé sur la machine: git
- Avoir un proxy nginx fonctionnel (voir lab deploy reverse proxy sur la section 03-conteneurisation)
Schema#
XXX
Déroulement du Lab#
Etape 1 : Creation du manifeste docker compose#
Dans cette étape, nous allons construire ensemble le manifeste docker-compose en commentant l'utilité de chaque instruction.
Tout d'abord, il faut créer un fichier docker-compose.yaml et mettre le contenu ci-après:
# Indication de la version de l'API
version: '3.8'
# Création d'un volume nommé <sonarqube-data> pour la persistance des données.
volumes:
sonarqube-data:
name: sonarqube-data
sonarqube-postgres-data:
name: sonarqube-postgres-data
# Création d'un réseau nommé <sonarqube-network> pour l'ensemble des conteneurs qui vont appartenir à la stack et déclaration du réseau <frontend> utilisé par le proxy nginx.
networks:
sonarqube-network:
name: sonarqube-network
frontend:
name: frontend
external: true
# Déclaration liste des services
services:
# Service sonarqube-database: Instance postgres pour la persistence des données Sonar
sonarqube-database:
# Nom du comteneur
container_name: sonarqube-database
# Choix de l'image
image: "postgres:16.4"
#Montage du volume pour la persitence des données
volumes:
- sonarqube-postgres-data:/var/lib/postgresql/data
# Définition des variables d'environnement contenant le nom d'utilisateur de la base Postgres et le mot de passe associé
environment:
- POSTGRES_PASSWORD=<db-password>
- POSTGRES_USER=sonar
# Attachement du service au réseaux sonarqube-network
networks:
sonarqube-network:
aliases:
- sonarqube-database
# Service sonarqube: Instance sonarqube
sonarqube:
# Choix de l'image
image: sonarqube:10.7.0-community
# Nom du comteneur
container_name: sonarqube
# Attachement du service aux réseaux sonarqube-network & frontend
networks:
- sonarqube-network
- frontend
# Montage du volume pour la persitence des données et du socket docker pour autoriser le docker-in-docker
volumes:
- sonarqube-data:/opt/sonarqube
# Définition des variables d'environnement pour la connexion à la base de données
environment:
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=<db-password>
- SONAR_JDBC_URL=jdbc:postgresql://sonarqube-database/sonar?characterEncoding=utf8
- stop-timeout=3600
# Toujours forcer le rédémarrage du conteneur en cas de problème.
restart: always
NB: N'oubliez pas de remplacer <db-password> par votre propre mot de passe
Etape 2: Execution des services#
A ce stade, toutes les configurations sont finalisées. Il ne reste plus qu'à démarrer les services
- Démarrage des services
La commande ci-dessous permet de démarrer tous les services en arrière-plan.
docker compose up -d
- Affichage des conteneurs
docker ps -a --filter name=sonarqube
Etape 2 : Récupération du code source#
La commande suivante permet de récupérer le code source contenant les fichiers samples du proxy nginx.
git clone https://github.com/wingufactory/lecloudfacile-devops-labs.git
Etape 4: Mise à jour de la configuration du proxy#
NB: Vous devriez avoir un proxy nginx fonctionnel avant de poursuivre. Si tel n'est pas le cas, merci de rependre le lab sur le déploiement d'un reverse proxy avec Docker compose.
Le répertoire lecloudfacile-devops-labs/nginx-proxy/conf.d/sonarqube contient un example de configuration du proxy pour la gestion des requêtes entrantes en ce concerne l'application sonarqube. Nous pourrons la copier dans le répertoire
lecloudfacile-devops-labs/nginx-proxy/conf.d avec la bonne extension .conf
cd lecloudfacile-devops-labs/nginx-proxy/
cp conf.d/sonarqube/sonarqube.scratch.conf.template conf.d/sonarqube.conf
Il faudra recharger la configuration du proxy pour prendre en compte les modifications apportées.
docker exec -ti proxy nginx -s reload
Etape 5: Accès à l'application#
Ouvrir un navigateur et taper l'adresse suivante : http://quality.lcf.io

NB: Assurez-vous d'avoir dans votre fichier /etc/hostsl'entrée suivante :
127.0.0.1 quality.lcf.io
Si tel n'est pas le cas, merci de rependre le lab sur le déploiement d'un reverse proxy avec Docker compose.
Etape 6: Finalisation de l'installation#
1 - Se connecter en utilisant le login admin et le mot de passe admin puis cliquer sur le button continuer continuer

2 - Changer le mot de passe de l'administrateur

3- Vous devez obtenir une vue similaire à la suivante

Next steps#
Dans les labs suivants, nous allons voir comment interfacer Sonarqube avec Jenkins pour scanner le code des applictaions.