In this tutorial, How to Using SonarQube from a jenkins pipeline in Docker. Now, let’s go SonarQube from a Jenkins Pipeline job in Docker
Docker Compose for SonarQube
Create directories to keep SonarQube’s data
# mkdir -p /data/sonarqube/{conf,logs,temp,data,extensions,bundled_plugins,postgresql,postgresql_data}
Create a new user and change those directories owner
# adduser sonarqube
# usermod -aG docker sonarqube
# chown -R sonarqube:sonarqube /data/sonarqube/
Find UID of sonarqube user
# id sonarqube
Create a Docker Compose file using the UID in the user.
version: "3"
networks:
sonarnet:
driver: bridge
services:
sonarqube:
// use UID here
user: 1005:1005
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
volumes:
- /data/sonarqube/conf:/opt/sonarqube/conf
- /data/sonarqube/logs:/opt/sonarqube/logs
- /data/sonarqube/temp:/opt/sonarqube/temp
- /data/sonarqube/data:/opt/sonarqube/data
- /data/sonarqube/extensions:/opt/sonarqube/extensions
- /data/sonarqube/bundled_plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- /data/sonarqube/postgresql:/var/lib/postgresql
- /data/sonarqube/postgresql_data:/var/lib/postgresql/data
Use docker-compose start
# docker-compose -f sonarqube-compose.yml up
Install and configure Nginx
Nginx Install
# yum install nginx
Start Nginx service
# service nginx start
Configure nginx
I have created a “/etc/nginx/conf.d/sonar.devopsroles.com.conf” file, look like as below:
upstream sonar {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name dev.sonar.devopsroles.com;
root /var/www/html;
allow all;
}
location / {
return 301 https://dev.sonar.devopsroles.com;
}
}
server {
listen 443 ssl;
server_name dev.sonar.devopsroles.com;
access_log /var/log/nginx/dev.sonar.devopsroles.com-access.log proxy;
error_log /var/log/nginx/dev.sonar.devopsroles.com-error.log warn;
location / {
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://sonar$request_uri;
}
}
Check syntax and reload NGINX’s configs
# nginx -t && systemctl start nginx
Jenkins Docker Compose
I will update as soon as free time