Production Mode not working in Vaadin24 with Java 21 and Spring boot 3

Below is the build.gradle for the project

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.1'
    id 'io.spring.dependency-management' version '1.1.5'
    id 'com.vaadin' version '24.4.4'
    id "com.google.cloud.tools.jib" version "3.2.1"
}

group = 'de.test.ui'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

dependencyManagement {
    imports {
        mavenBom "com.vaadin:vaadin-bom:24.4.4"
    }
}

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}

repositories {
    mavenCentral()
    maven { setUrl("https://repo.spring.io/milestone") }
    maven { setUrl("https://maven.vaadin.com/vaadin-addons") }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'org.springframework:spring-aspects:5.3.21'

    implementation 'com.vaadin:vaadin-spring-boot-starter'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform()
}


vaadin {
    productionMode = true
}

I tried passing the gradle option also -Pvaadin.productionMode in the build command but still got the error.

Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

e[32m :: Spring Boot :: e[39m              e[2m (v3.3.1)e[0;39m

e[33m2024-07-19T12:20:12,084e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36md.t.a.l.VaadinUie[0;39m - Starting VaadinUi using Java 21.0.3 with PID 1 (/app/classes started by cloud in /)
e[33m2024-07-19T12:20:12,088e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36md.t.a.l.VaadinUie[0;39m - The following 1 profile is active: "teststable"
e[33m2024-07-19T12:20:12,239e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.d.restart.ChangeableUrlse[0;39m - The Class-Path manifest attribute in /app/libs/kafka-clients-3.7.0.jar referenced one or more files that do not exist: file:/app/libs/slf4j-api-1.7.36.jar
e[33m2024-07-19T12:20:12,239e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.d.e.DevToolsPropertyDefaultsPostProcessore[0;39m - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
e[33m2024-07-19T12:20:12,240e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.d.e.DevToolsPropertyDefaultsPostProcessore[0;39m - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
e[33m2024-07-19T12:20:15,539e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.d.r.c.RepositoryConfigurationDelegatee[0;39m - Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
e[33m2024-07-19T12:20:15,573e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.d.r.c.RepositoryConfigurationDelegatee[0;39m - Finished Spring Data repository scanning in 27 ms. Found 0 Elasticsearch repository interfaces.
e[33m2024-07-19T12:20:15,637e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.d.r.c.RepositoryConfigurationDelegatee[0;39m - Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
e[33m2024-07-19T12:20:15,643e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.d.r.c.RepositoryConfigurationDelegatee[0;39m - Finished Spring Data repository scanning in 5 ms. Found 0 Reactive Elasticsearch repository interfaces.
e[33m2024-07-19T12:20:16,569e[0;39m e[31m[restartedMain]e[0;39m e[31mWARN e[0;39m e[1;36mo.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorCheckere[0;39m - Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [annotationActionEndpointMapping] is declared through a non-static factory method on that class; consider declaring it as static instead.
e[33m2024-07-19T12:20:16,740e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.w.s.a.s.AnnotationActionEndpointMappinge[0;39m - Supporting [WS-Addressing August 2004, WS-Addressing 1.0]
e[33m2024-07-19T12:20:18,342e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.w.e.tomcat.TomcatWebServere[0;39m - Tomcat initialized with port 8080 (http)
e[33m2024-07-19T12:20:18,356e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.coyote.http11.Http11NioProtocole[0;39m - Initializing ProtocolHandler ["http-nio-8080"]
e[33m2024-07-19T12:20:18,362e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.catalina.core.StandardServicee[0;39m - Starting service [Tomcat]
e[33m2024-07-19T12:20:18,362e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.catalina.core.StandardEnginee[0;39m - Starting Servlet engine: [Apache Tomcat/10.1.25]
e[33m2024-07-19T12:20:18,561e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.c.c.C.[Tomcat].[localhost].[/]e[0;39m - Initializing Spring embedded WebApplicationContext
e[33m2024-07-19T12:20:18,562e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.w.s.c.ServletWebServerApplicationContexte[0;39m - Root WebApplicationContext: initialization completed in 6321 ms
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
e[33m2024-07-19T12:20:19,171e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.h.validator.internal.util.Versione[0;39m - HV000001: Hibernate Validator 8.0.1.Final
e[33m2024-07-19T12:20:19,838e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.atmosphere.cpr.AtmosphereFrameworke[0;39m - Installed AtmosphereHandler com.vaadin.hilla.push.PushEndpoint mapped to context-path: /HILLA/push
e[33m2024-07-19T12:20:19,838e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.atmosphere.cpr.AtmosphereFrameworke[0;39m - Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.hilla.push.PushEndpoint
e[33m2024-07-19T12:20:19,838e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.atmosphere.cpr.AtmosphereFrameworke[0;39m - 	org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor : Atmosphere LifeCycle
e[33m2024-07-19T12:20:19,838e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.atmosphere.cpr.AtmosphereFrameworke[0;39m - 	org.atmosphere.client.TrackMessageSizeInterceptor :  Track Message Size Interceptor using |
e[33m2024-07-19T12:20:19,838e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.atmosphere.cpr.AtmosphereFrameworke[0;39m - 	org.atmosphere.interceptor.SuspendTrackerInterceptor : UUID Tracking Interceptor
e[33m2024-07-19T12:20:21,064e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.c.c.C.[Tomcat].[localhost].[/]e[0;39m - Initializing AtmosphereFramework
e[33m2024-07-19T12:20:21,334e[0;39m e[1;31m[restartedMain]e[0;39m e[1;31mERRORe[0;39m e[1;36mo.a.c.c.C.[Tomcat].[localhost].[/]e[0;39m - Exception sending context initialized event to listener instance of class [com.vaadin.flow.spring.VaadinServletContextInitializer$CompositeServletContextListener]
java.lang.RuntimeException: Unable to initialize com.vaadin.flow.spring.VaadinServletContextInitializer$VaadinAppShellContextListener
	at com.vaadin.flow.spring.VaadinServletContextInitializer$FailFastServletContextListener.contextInitialized(VaadinServletContextInitializer.java:201)
	at com.vaadin.flow.spring.VaadinServletContextInitializer$CompositeServletContextListener.lambda$contextInitialized$0(VaadinServletContextInitializer.java:225)
	at java.base/java.util.ArrayList.forEach(Unknown Source)
	at com.vaadin.flow.spring.VaadinServletContextInitializer$CompositeServletContextListener.contextInitialized(VaadinServletContextInitializer.java:225)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3995)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4424)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
	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:749)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
	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:749)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:437)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:128)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:107)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:516)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:222)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:618)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
	at com.test.ui.vaadinui.VaadinUi.main(VaadinUi.java:19)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
Caused by: java.lang.IllegalStateException: Running project in development mode with no access to folder '/builds/testapp/apps/VaadinUi'.
Build project in production mode instead, see https://vaadin.com/docs/latest/flow/production/overview
	at com.vaadin.flow.server.startup.AbstractConfigurationFactory.verifyFolderExists(AbstractConfigurationFactory.java:261)
	at com.vaadin.flow.server.startup.AbstractConfigurationFactory.getConfigParametersUsingTokenData(AbstractConfigurationFactory.java:106)
	at com.vaadin.flow.server.startup.DefaultApplicationConfigurationFactory.create(DefaultApplicationConfigurationFactory.java:112)
	at com.vaadin.flow.server.startup.ApplicationConfiguration.lambda$get$0(ApplicationConfiguration.java:64)
	at com.vaadin.flow.server.VaadinServletContext.getAttribute(VaadinServletContext.java:73)
	at com.vaadin.flow.server.startup.ApplicationConfiguration.get(ApplicationConfiguration.java:47)
	at com.vaadin.flow.spring.VaadinServletContextInitializer$VaadinAppShellContextListener.failFastContextInitialized(VaadinServletContextInitializer.java:632)
	at com.vaadin.flow.spring.VaadinServletContextInitializer$FailFastServletContextListener.contextInitialized(VaadinServletContextInitializer.java:197)
	... 44 common frames omitted
e[33m2024-07-19T12:20:21,337e[0;39m e[1;31m[restartedMain]e[0;39m e[1;31mERRORe[0;39m e[1;36mo.a.catalina.core.StandardContexte[0;39m - One or more listeners failed to start. Full details will be found in the appropriate container log file
e[33m2024-07-19T12:20:21,338e[0;39m e[1;31m[restartedMain]e[0;39m e[1;31mERRORe[0;39m e[1;36mo.a.catalina.core.StandardContexte[0;39m - Context [] startup failed due to previous errors
e[33m2024-07-19T12:20:21,347e[0;39m e[31m[restartedMain]e[0;39m e[31mWARN e[0;39m e[1;36mo.a.c.loader.WebappClassLoaderBasee[0;39m - The web application [ROOT] appears to have started a thread named [BatchSpanProcessor_WorkerThread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base/jdk.internal.misc.Unsafe.park(Native Method)
 java.base/java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
 java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
 java.base/java.util.concurrent.ArrayBlockingQueue.poll(Unknown Source)
 io.opentelemetry.sdk.trace.export.BatchSpanProcessor$Worker.run(BatchSpanProcessor.java:266)
 java.base/java.lang.Thread.run(Unknown Source)
e[33m2024-07-19T12:20:21,356e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.coyote.http11.Http11NioProtocole[0;39m - Starting ProtocolHandler ["http-nio-8080"]
e[33m2024-07-19T12:20:21,449e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.coyote.http11.Http11NioProtocole[0;39m - Pausing ProtocolHandler ["http-nio-8080"]
e[33m2024-07-19T12:20:21,449e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.catalina.core.StandardServicee[0;39m - Stopping service [Tomcat]
e[33m2024-07-19T12:20:21,450e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.coyote.http11.Http11NioProtocole[0;39m - Stopping ProtocolHandler ["http-nio-8080"]
e[33m2024-07-19T12:20:21,453e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.a.coyote.http11.Http11NioProtocole[0;39m - Destroying ProtocolHandler ["http-nio-8080"]
e[33m2024-07-19T12:20:21,453e[0;39m e[31m[restartedMain]e[0;39m e[31mWARN e[0;39m e[1;36mo.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContexte[0;39m - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server
e[33m2024-07-19T12:20:21,462e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mi.o.sdk.trace.SdkTracerProvidere[0;39m - Calling shutdown() multiple times.
e[33m2024-07-19T12:20:21,536e[0;39m e[34m[restartedMain]e[0;39m e[34mINFO e[0;39m e[1;36mo.s.b.a.l.ConditionEvaluationReportLoggere[0;39m - 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
e[33m2024-07-19T12:20:21,563e[0;39m e[1;31m[restartedMain]e[0;39m e[1;31mERRORe[0;39m e[1;36mo.s.boot.SpringApplicatione[0;39m - Application run failed
org.springframework.context.ApplicationContextException: Unable to start web server
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:165)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:618)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
	at com.test.ui.vaadinui.VaadinUi.main(VaadinUi.java:19)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:147)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:107)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:516)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:222)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162)
	... 11 common frames omitted
Caused by: java.lang.IllegalStateException: StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[] failed to start
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.rethrowDeferredStartupExceptions(TomcatWebServer.java:209)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:131)
	... 16 common frames omitted

No Gradle User myself. So you have to do the comparison yourself: here is a working example: base-starter-spring-gradle/build.gradle at v24 · vaadin/base-starter-spring-gradle · GitHub

I’m also not a gradle user. But in the logs I can see this:
Build project in production mode instead, see https://vaadin.com/docs/latest/flow/production/overview

You need probably to run the build like this:
./gradlew clean build -Pvaadin.productionMode

Then run the application.

Hey, thanks for this quick reply. But I have followed all the ways, including this gradle args.

yeah, I have followed this also. Still the same issue.

Also, make sure you do not have any JAR in classpath that contains the META-INF/VAADIN/config/flow-build-info.json file.
It could be, for example, an add-on adding that mistakenly did not exclude that file

Edit: only your main artifact should have the flow-build-info.json file.

I can see it in two places with different values.

I’m not a Gradle user either, but I would say that the file in the first screenshot is the production version and in the expected folder.
However, I have no idea what the vaadin-generated folder is and if it gets into the final artifact or if it is available on classpath when you run the application.

EDIT: I checked on the starter project and I see the same vaadin-generated folder, so I suppose it is ok.

I can run the server in Production mode now after some changes, but with exactly the same properties on K8 still my deployment is failing with the same error!

How do you build the container image?

I am using gradle jib plugin and using ‘gradle jib’ command to build all my spring boot app

Edit: Also using helm install for k8 deployment

If I do a production build with gradle clean build -Pvaadin.productionMode and then run gradle jibDockerBuild --image localhost:5001/my-test, I get a container image that executes the application in production mode.

If I do a gradle clean and then invoke jibDockerBuild it builds an image for an application running in development. This is expected because vaadinBuildFrontend has not been executed.

If I run ./gradlew vaadinBuildFrontend jibDockerBuild --image localhost:5001/my-test -Pvaadin.productionMode, again I get an image that runs the application in production mode.

1 Like

Thanks @marcoc_753 for this detailed analysis, it was the culprit.
The jib task was not including the vaadinBuildFrontend in the execution I have added that manually and it worked like a charm.

Thanks :pray: