Sonarqube official docker image, is not persisting any configuration changes like: creating users, changing root password or even installing new plugins
.
Once the container is restarted, all the configuration changes disappear and the installed plugins are lost. Even the projects' keys and their previous QA analytics data is unavailable after a restart.
How can we persist the data when using Sonarqube's official docker image?
"$SONARQUBE_HOME/data", "$SONARQUBE_HOME/extensions"
as seen from Sonarqube Dockerfile.Since we wanted to persist the data across invocations, we need to make sure that a production grade database is setup and is linked to Sonarqube and the extensions directory is created and mounted as volume on the host machine so that all the downloaded plugins are available across container invocations and can be used by multiple containers (if required).
Database Setup:
It is not necessary to create tables, Sonarqube creates them if it doesn't find them.
Starting up Sonarqube container:
Hi @VanagaS and others landing here.
I just wanted to provide an alternative to the above. Maybe some would even consider it an easier one.
Notice this line SONARQUBE_HOME in the Dockerfile for the
docker-sonarqube
image. We can control this environment variable.When using
docker run
. Simply do:txt docker run -d \ ... ... -e SONARQUBE_HOME=/sonarqube-data -v /PERSISTENT_DISK/sonarqubeVolume:/sonarqube-data
This will make Sonarqube create the conf, data and so forth folders and store data therein. As needed.
Or with
Kubernetes
. In your deployment YAML file. Do:txt ... ... env: - name: SONARQUBE_HOME value: /sonarqube-data ... ... volumeMounts: - name: app-volume mountPath: /sonarqube-data
And the
name
in thevolumeMounts
property points to a volume in thevolumes
section of the Kubernetes deployment YAML file. This again will make Sonarqube use the/sonarqube-data
mountPath for creating extenions, conf and so forth folders, then save data therein.And voila your Sonarqube data is thereby persisted.
I hope this will help others.
N.B. Notice that the YAML and Docker run examples are not exhaustive. They focus on the issue of persisting Sonarqube data.