Voor ontwikkelaars en QA-engineers is SonarQube waarschijnlijk een bekend hulpmiddel: een uitgebreide dienst voor geautomatiseerde codecontrole die bugs, kwetsbaarheden en problemen met de codekwaliteit opspoort. Het is een essentieel onderdeel geworden van moderne ontwikkelingsworkflows en helpt teams om schone, veilige en onderhoudbare codebases te behouden.
SonarQube is nu beschikbaar op Docker Hub, wat betekent dat we eenvoudig gebruik kunnen maken van de mogelijkheden ervan via Docker-containers, zonder ingewikkelde installatieprocedures. We hoeven niet langer handmatig webservers, databases of Java SDK's op onze lokale machines te installeren. Alles is handig gebundeld in één SonarQube Docker-image, waardoor de implementatie eenvoudig en consistent is in verschillende omgevingen.
In deze handleiding doorlopen we het volledige proces van het lokaal installeren en uitvoeren van SonarQube met behulp van Docker, en vervolgens het integreren ervan met uw lokale projecten voor geautomatiseerde codeanalyse.
A. SonarQube uitvoeren vanuit Docker
1. De benodigde images ophalen
Zoals bij elke Docker-workflow moeten we eerst de benodigde images ophalen van Docker Hub. We hebben zowel de SonarQube-serverimage als de Sonar Scanner CLI-image nodig voor het analyseren van onze code.
Haal de SonarQube-serverimage op:
docker pull sonarqube:latest
Haal de Sonar Scanner CLI-image op:
docker pull sonarsource/sonar-scanner-cli:latest
Deze commando's downloaden de nieuwste versies van beide images naar je lokale Docker-registry. Afhankelijk van je internetverbinding kan dit enkele minuten duren, aangezien de images relatief groot zijn.
2. De SonarQube-container uitvoeren
Nu gaan we een container maken en uitvoeren met behulp van de SonarQube-image die we zojuist hebben opgehaald. In dit voorbeeld stel ik de service beschikbaar op poort 9001 (de standaardpoort is 9000, maar u kunt dit aanpassen om conflicten met andere services te voorkomen):
docker run --name sonarqube -p 9001:9000 sonarqube
Dit commando maakt een container met de naam "sonarqube" aan en koppelt poort 9001 op je hostmachine aan poort 9000 in de container. De container start op en je ziet initialisatielogboeken in je terminal. Wacht tot je berichten ziet die aangeven dat SonarQube volledig operationeel is voordat je verdergaat.
Als u de container in de losgekoppelde modus (op de achtergrond) wilt uitvoeren, voegt u de vlag -d toe:
docker run -d --name sonarqube -p 9001:9000 sonarqube
3. Open SonarQube in je browser
Open je webbrowser en ga naar http://localhost:9001. Je zou de inlogpagina van SonarQube moeten zien.

Gebruik de standaard inloggegevens om in te loggen:
- Gebruikersnaam: admin
- Wachtwoord: admin
Bij uw eerste login zal SonarQube u vragen om het standaardwachtwoord te wijzigen om veiligheidsredenen. Kies een sterk wachtwoord en bewaar het veilig, aangezien u het nodig zult hebben voor toekomstige toegang.
B. Lokale projecten uitvoeren met SonarQube
Nu SonarQube actief is, gaan we het configureren om een lokaal project te analyseren.
1. Een nieuw project aanmaken

Maak in de SonarQube-webinterface een nieuw project aan en genereer een authenticatietoken. Voor dit voorbeeld heb ik een Laravel-project met de naam "Travellist Demo". Ik geef mijn SonarQube-project dezelfde naam als mijn Laravel-project, zodat ik het gemakkelijker kan herkennen en beheren.
Volg deze stappen in de SonarQube-interface:
- Klik op "Create Project" of het "+"-pictogram
- Kies "Handmatig" als aanmaakmethode
- Voer je projectsleutel in (bijv. "travellist-demo")
- Voer de weergavenaam van je project in (bijv. "Travellist Demo")
- Klik op "Instellen"
- Genereer een token voor authenticatie en kopieer dit—je hebt dit nodig in de volgende stap
2. Start de Sonar Scanner
Navigeer in uw terminal naar de hoofdmap van uw project en voer vervolgens de Sonar Scanner uit met de volgende Docker-opdracht:
docker run --rm -v "$(pwd):/usr/src" sonarsource/sonar-scanner-cli \
-D sonar.projectKey=UW_PROJECTSLEUTEL \
-D sonar.host.url=http://172.17.0.2:9000 \
-D sonar.login=YOUR_TOKEN
Vervang YOUR_PROJECT_KEY door de projectsleutel die je in SonarQube hebt aangemaakt, en YOUR_TOKEN door het authenticatietoken dat je hebt gegenereerd.
Belangrijke opmerkingen:
De host-URL http://172.17.0.2:9000/ is het standaard interne Docker-netwerkadres voor de SonarQube-container. Dit IP-adres kan echter variëren, afhankelijk van uw Docker-netwerkconfiguratie. Voer de volgende opdracht uit om het juiste IP-adres van uw SonarQube-container te controleren:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sonarqube
Dit geeft het daadwerkelijke IP-adres weer van uw actieve SonarQube-container. Gebruik dit IP-adres in de parameter sonar.host.url.
Alternatieve aanpak: Als u problemen ondervindt met containernetwerken, kunt u ook het hostnetwerk van Docker gebruiken of een aangepast Docker-netwerk aanmaken om de containers betrouwbaarder met elkaar te verbinden.
3. Analyse voltooid
Als de scan succesvol wordt uitgevoerd, zult u verschillende veranderingen opmerken:
-
Er wordt automatisch een map
.scannerworkaangemaakt in de hoofdmap van uw project. Deze map bevat tijdelijke bestanden en cachegegevens die door de scanner worden gebruikt. -
In de SonarQube-webinterface wordt u automatisch doorgestuurd naar het dashboard van uw project, waar u de analyseresultaten kunt bekijken.
-
Het dashboard toont verschillende statistieken, waaronder bugs, kwetsbaarheden, code smells, codedekking, duplicaties en algemene beoordelingen van de codekwaliteit.
U kunt nu de gedetailleerde analyse bekijken, inzoomen op specifieke problemen en aanbevelingen bekijken om de kwaliteit van uw code te verbeteren. SonarQube biedt regel-voor-regel annotaties die precies aangeven waar problemen zich bevinden en bevat vaak suggesties voor oplossingen.

Extra tips
Overweeg deze aanvullende werkwijzen om uw workflow efficiënter te maken:
-
Gegevens bewaren: Gebruik Docker-volumes om SonarQube-gegevens te bewaren bij het opnieuw opstarten van containers:
docker run -d --name sonarqube -p 9001:9000 -v sonarqube_data:/opt/sonarqube/data sonarqube -
Regelmatige scans: Integreer SonarQube-scans in je CI/CD-pijplijn om code automatisch te analyseren bij elke commit of pull-aanvraag
-
Kwaliteitspoorten: Configureer kwaliteitspoorten in SonarQube om minimale codekwaliteitsnormen af te dwingen voordat code mag worden samengevoegd
Zo draai je SonarQube voor lokale projecten via Docker! Deze opzet biedt een krachtige, geïsoleerde omgeving voor continue analyse van de codekwaliteit, zonder je ontwikkelingsmachine vol te proppen met extra software-installaties. Door gebruik te maken van Docker kun je SonarQube eenvoudig starten, stoppen en beheren naast je andere ontwikkeltools, zodat je code gedurende de hele ontwikkelingscyclus aan hoge normen voldoet.
Ik hoop dat je deze gids nuttig vindt! Bedankt voor het lezen!