Tabla de contenidos
SonarQube
SonarQube en Docker es una plataforma de análisis estático de código que permite detectar errores, vulnerabilidades, y problemas de calidad en aplicaciones de software. Compatible con múltiples lenguajes de programación, SonarQube ayuda a mantener un código limpio y eficiente mediante la evaluación de estándares como seguridad, mantenibilidad, y rendimiento. Además, ofrece integración con herramientas de CI/CD, lo que facilita la mejora continua del código en entornos de desarrollo. Usarlo con Docker simplifica su implementación y gestión, permitiendo escalar y monitorizar la calidad del código de manera eficiente.
Instalación de SonarQube en Docker
Se crea el directorio que resguarda el archivo docker-compose.yml, en mi caso será en la ruta: /home/docker/compose/sonarqube
mkdir /home/docker/compose/sonarqube
Una vez creado el directorio, accedemos a él para crear el archivo docker-compose.yml
cd /home/docker/compose/sonarqube
nano docker-compose.yml
Dentro del archivo docker-compose.yml agrega las siguientes lineas, que nos permitirá recuperar la imagen Docker de SonarQube y también algunas configuraciones.
NO OLVIDES ESTA CONFIGURACIÓN DE SONARQUBE EN DOCKER
Antes de que copies y pegues estas lineas, cambia las contraseñas de postgres
, sonarqube
y pgadmin4
.
services: postgres: image: postgres:latest container_name: postgres environment: POSTGRES_DB: sonarqube POSTGRES_USER: sonar POSTGRES_PASSWORD: sonarpassword volumes: - postgres_data:/var/lib/postgresql/data restart: always sonarqube: image: sonarqube:latest container_name: sonarqube ports: - 9000:9000 environment: - SONAR_JDBC_URL=jdbc:postgresql://postgres:5432/sonarqube - SONAR_JDBC_USERNAME=sonar - SONAR_JDBC_PASSWORD=sonarpassword volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_logs:/opt/sonarqube/logs - sonarqube_extensions:/opt/sonarqube/extensions restart: always pgadmin: image: dpage/pgadmin4:latest container_name: pgadmin environment: PGADMIN_DEFAULT_EMAIL: myemail@mail.com PGADMIN_DEFAULT_PASSWORD: mipassword ports: - 8081:80 volumes: - pgadmin_data:/var/lib/pgadmin restart: always volumes: postgres_data: sonarqube_data: sonarqube_logs: sonarqube_extensions: pgadmin_data:
Normalmente separo los contenedores, es decir, en este Docker Compose estoy metiendo tres servicios en uno, no está mal, es válido. Pero para temas de mantenibilidad, se prefiere hacer los servicios separados. En este caso, como SonarQube es el único de mis servicios que utiliza postgres
y por ende pgadmin4
, es que lo hago de esta manera. Eres libre de hacerlo de cualquier forma.
Una vez que el archivo esté creado, se ejecuta el comando para iniciar la instalación de SonarQube.
sudo docker compose up -d

Una vez que termine de procesar el Docker, es momento de ir al navegador web y poner: http://localhost:9000/
Abrirá una página para poder crear el usuario administrador, el usuario es admin
y la contraseña inicial es admin
.

Después de actualizar la contraseña del admin, accedemos al panel de control de SonarQube. En este punto, ya se puede enlazar SonarQube a Jenkins, pero eso lo estoy guardando para una publicación en concreto.
Postgres y pgAdmin4
Lo que sigue, es enlazar el servidor de postgres a pgadmin4. Para eso, podemos entrar a http://localhost:8081/ o el puerto que hayas asignado en el Docker Compose.
Las credenciales son las que se pusieron en el Docker Compose.

En la parte superior izquierda, aparece un listado de servers, le das clic derecho, se despliega un menu, seleccionas register y luego server.

A continuación, en la pestaña “General” le asignarás un nombre al servidor, en mi caso sólo le puse “sonar”.

En la pestaña de “Connection” pondrás “postgres” en el Host name, el puerto se queda en 5432, el usuario es el que asignamos en el Docker Compose, el Maintenance database queda como postgres, colocas la contraseña que igual se definió en el Docker Compose y finalmente activas el “save password?”.

Das a guardar y deberías ver las tablas de sonar.

Conclusión
La instalación de SonarQube utilizando Docker Compose es una solución práctica y eficiente que permite desplegar rápidamente en un entorno controlado. Aunque he mencionado en publicaciones anteriores que separar los archivos de docker-compose
para cada servicio es una buena práctica de mantenimiento, en este caso, integrar todos los servicios en un único docker-compose.yml
simplifica la gestión y puesta en marcha de SonarQube.