I am trying to upgrade my SonarQube from 8.2 to 9.9 version using Docker Compose.
I am using PostgreSQL as database and have taken the data backup from 8.2 also, now I created new folder and copied all the backup data and attaching to new SonarQube.
But when I start the container, I get the following error in Docker logs and the container is not starting:
2023.04.15 12:28:05 INFO web[][o.s.s.p.LogServerVersion] SonarQube Server / 9.9.0.65466 / ce743843018827cb30c05735e7971523de34bb48
2023.04.15 12:28:05 INFO web[][o.sonar.db.Database] Create JDBC data source for jdbc:postgresql://db:5432/sonar
2023.04.15 12:28:05 INFO web[][c.z.h.HikariDataSource] HikariPool-1 - Starting...
2023.04.15 12:28:05 INFO web[][c.z.h.p.HikariPool] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@123456
2023.04.15 12:28:05 INFO web[][c.z.h.HikariDataSource] HikariPool-1 - Start completed.
2023.04.15 12:28:07 INFO web[][o.s.s.p.ServerFileSystemImpl] SonarQube home: /opt/sonarqube
2023.04.15 12:28:07 INFO web[][o.s.s.u.SystemPasscodeImpl] System authentication by passcode is disabled
2023.04.15 12:28:07 WARN web[][o.s.c.a.AnnotationConfigApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@12345-org.sonar.server.platform.DatabaseServerCompatibility': Initialization of bean failed; nested exception is Current version is too old. Please upgrade to Long Term Support version firstly.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@123456-org.sonar.server.platform.DatabaseServerCompatibility': Initialization of bean failed; nested exception is Current version is too old. Please upgrade to Long Term Support version firstly.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:628)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:187)
at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:80)
at org.sonar.server.platform.platformlevel.PlatformLevel2.start(PlatformLevel2.java:103)
at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:196)
at org.sonar.server.platform.PlatformImpl.startLevel2Container(PlatformImpl.java:169)
at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:77)
at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:43)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4764)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5222)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.sonar.server.app.EmbeddedTomcat.start(EmbeddedTomcat.java:72)
at org.sonar.server.app.WebServer.start(WebServer.java:55)
at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:97)
at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:81)
at org.sonar.server.app.WebServer.main(WebServer.java:104)
Caused by: org.sonar.api.utils.MessageException: Current version is too old. Please upgrade to Long Term Support version firstly.
2023.04.15 12:28:07 INFO web[][c.z.h.HikariDataSource] HikariPool-1 - Shutdown initiated...
2023.04.15 12:28:07 INFO web[][c.z.h.HikariDataSource] HikariPool-1 - Shutdown completed.
2023.04.15 12:28:08 INFO web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
2023.04.15 12:28:08 INFO web[][o.s.p.ProcessEntryPoint] Hard stopping process
2023.04.15 12:28:08 INFO app[][o.s.a.SchedulerImpl] Process[Web Server] is stopped
2023.04.15 12:28:08 WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 143
2023.04.15 12:28:08 INFO app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
2023.04.15 12:28:08 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
2023.04.15 12:28:09 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
Here is my Docker Compose file:
version: "3.3"
services:
sonarqube:
# image: sonarqube:8.9-community
build:
context: ./sonarqube/
container_name: sonarqube
restart: always
depends_on:
- db
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- /home/ubuntu/sonar/sonar_bk/sonarqube_data:/opt/sonarqube/data
- /home/ubuntu/sonar/sonar_bk/sonarqube_extensions:/opt/sonarqube/extensions
- /home/ubuntu/sonar/sonar_bk/sonarqube_logs:/opt/sonarqube/logs
db:
image: postgres:12
container_name: postgres
restart: always
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- /home/ubuntu/sonar/sonar_bk/postgresql:/var/lib/postgresql
- /home/ubuntu/sonar/sonar_bk/postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
Here I am using PostgreSQL 12 as my previous configuration is configured with 12 only and using Docker version 23.
I used Dockerfile from sonarqube 9.9 github repo.
How can I sort it out? Thanks in advance.
According to Sonarqube's documentation, you can't just upgrade from an older version to the latest. You have to first upgrade through all previous latest LTS versions before reaching your target.
I think in your case, you would have to first upgrade to 8.9LTS before upgrading to 9.9LTS.