Estas configuraciones han sido probadas en un VPS con Ubuntu 22.04 LTS y Ubuntu 18.04 LTS.
Errores a solucionar
Estos son algunos errores en los logs que me llegaron a suceder y que llegue a encontrar en Internet, cabe mencionar que esto sucede para las versiones: sonarqube:7.8-community y sonarqube:9.9.3-community
11:27:21 ERROR: [2] bootstrap checks failed
11:27:21 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
11:27:21 [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
2019.07.02 07:26:07 WARN app[][o.s.application.App] SonarQube will require Java 11+ starting on next version
2019.07.02 07:26:07 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2019.07.02 07:26:07 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2019.07.02 07:26:08 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2019.07.02 07:26:08 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2019.07.02 07:26:08 INFO app[][o.e.p.PluginsService] no modules loaded
2019.07.02 07:26:08 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019.07.16 07:25:49 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2019.07.16 07:25:49 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2019.07.16 07:25:50 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2019.07.16 07:25:50 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2019.07.16 07:25:50 INFO app[][o.e.p.PluginsService] no modules loaded
2019.07.16 07:25:50 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
ERROR: [1] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
2019.07.16 07:25:59 WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
2019.07.16 07:25:59 INFO app[][o.s.a.SchedulerImpl] Process[es] is stopped
2019.07.16 07:25:59 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
Permisos para volúmenes locales
SonarQube necesita los siguientes volúmenes:
/opt/sonarqube/data
/opt/sonarqube/extensions
/opt/sonarqube/logs
/opt/sonarqube/conf
Para no perder la configuración cada vez que se reiniciar el contenedor creamos una carpeta dentro del vps para que esta información no se pierda, para este ejemplo tenemos.
/volumen/data/sonarqube/data
/volumen/data/sonarqube/extensions
/volumen/data/sonarqube/logs
/volumen/data/sonarqube/conf
Para esto tendríamos que darle permisos a las carpetas de los volúmenes con el siguiente comando:
sudo chmod 777 /volumen/data/sonarqube/*
Configuración de VPS
A continuación algunas configuraciones que probé para solucionar el problema.
1- Agregamos al archivo /etc/sysctl.conf lo siguiente:
fs.file-max = 100000
vm.max_map_count = 262144
2- Agregamos al archivo /etc/security/limits.conf
* hard nofile 1048576
* soft nofile 1048576
* hard nproc 1048576
* soft nproc 1048576
3- Ejecutamos el siguiente comando sudo sysctl -w vm.max_map_count=262144
4- Docker compose a ejecutar
version: "3"
services:
sonarqube:
image: sonarqube:9.9.3-community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- /volumen/data/sonarqube/data:/opt/sonarqube/data
- /volumen/data/sonarqube/extensions:/opt/sonarqube/extensions
- /volumen/data/sonarqube/logs:/opt/sonarqube/logs
- /volumen/data/sonarqube/conf:/opt/sonarqube/conf
ports:
- "9000:9000"
db:
image: postgres:12
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
volumes:
postgresql:
postgresql_data:
Last modified: 26/01/2024