I have used the micronaut gradle plugin to create the docker file ./gradlew optimizedDockerfileNative
Which creates the below docker file
FROM ghcr.io/graalvm/native-image-community:21-ol9 AS graalvm
WORKDIR /home/app
COPY --link build/docker/native-optimized/layers/libs /home/app/libs
COPY --link build/docker/native-optimized/layers/app /home/app/
RUN native-image --exclude-config .*/libs/netty-handler-4.1.111.Final.jar ^/META-INF/native-image/.* --exclude-config .*/libs/grpc-netty-1.64.0.jar ^/META-INF/native-image/.* --exclude-config .*/libs/netty-buffer-4.1.111.Final.jar ^/META-INF/native-image/.* --exclude-config .*/libs/netty-common-4.1.111.Final.jar ^/META-INF/native-image/.* --exclude-config .*/libs/netty-codec-http-4.1.111.Final.jar ^/META-INF/native-image/.* --exclude-config .*/libs/netty-transport-4.1.111.Final.jar ^/META-INF/native-image/.* --exclude-config .*/libs/netty-codec-http2-4.1.111.Final.jar ^/META-INF/native-image/.* -cp /home/app/libs/*.jar:/home/app/resources:/home/app/application.jar --no-fallback -o application fete.bird.Assessment -H:+StaticExecutableWithDynamicLibC
FROM gcr.io/distroless/cc-debian12
EXPOSE 8082
COPY --link --from=graalvm /home/app/application /app/application
ENTRYPOINT ["/app/application", "-H:+StaticExecutableWithDynamicLibC"]
I have removed the below statement from the docker file
COPY --link build/docker/native-optimized/config-dirs/generateResourcesConfigFile /home/app/config-dirs/generateResourcesConfigFile
COPY --link build/docker/native-optimized/config-dirs/com.fasterxml.jackson.core/jackson-databind/2.15.2 /home/app/config-dirs/com.fasterxml.jackson.core/jackson-databind/2.15.2
COPY --link build/docker/native-optimized/config-dirs/io.netty/netty-common/4.1.80.Final /home/app/config-dirs/io.netty/netty-common/4.1.80.Final
COPY --link build/docker/native-optimized/config-dirs/io.grpc/grpc-netty/1.51.0 /home/app/config-dirs/io.grpc/grpc-netty/1.51.0
COPY --link build/docker/native-optimized/config-dirs/ch.qos.logback/logback-classic/1.4.9 /home/app/config-dirs/ch.qos.logback/logback-classic/1.4.9
COPY --link build/docker/native-optimized/config-dirs/org.postgresql/postgresql/42.3.4 /home/app/config-dirs/org.postgresql/postgresql/42.3.4
COPY --link build/docker/native-optimized/config-dirs/com.zaxxer/HikariCP/5.0.1 /home/app/config-dirs/com.zaxxer/HikariCP/5.0.1
Since build/docker/native-optimized/config-dirs
directory doesn’t exist and I am not sure how to create those directories.
When I run the docker-compose
version: '3.8'
services:
assessment:
build:
context: ./assessment
dockerfile: Dockerfile
container_name: assessment
ports:
- 8082:8082
Facing the below exception
ERROR in ch.qos.logback.core.pattern.parser.Compiler@121fd0d3 - Failed to instantiate converter class [ch.qos.logback.core.pattern.color.CyanCompositeConverter] as a composite converter for keyword [cyan] ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ch.qos.logback.core.pattern.color.CyanCompositeConverter
assessment | at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ch.qos.logback.core.pattern.color.CyanCompositeConverter
assessment | at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:69)
assessment | at at ch.qos.logback.core.util.OptionHelper.instantiateByClassName(OptionHelper.java:44)
assessment | at at ch.qos.logback.core.util.OptionHelper.instantiateByClassName(OptionHelper.java:33)
assessment | at at ch.qos.logback.core.pattern.parser.Compiler.createCompositeConverter(Compiler.java:130)
assessment | at at ch.qos.logback.core.pattern.parser.Compiler.compile(Compiler.java:47)
assessment | at at ch.qos.logback.core.pattern.parser.Parser.compile(Parser.java:87)
assessment | at at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:85)
assessment | at at ch.qos.logback.classic.encoder.PatternLayoutEncoder.start(PatternLayoutEncoder.java:28)
assessment | at at fete.bird.StaticLogbackConfiguration.configure(StaticLogbackConfiguration.java:22)
assessment | at at ch.qos.logback.classic.util.ContextInitializer.invokeConfigure(ContextInitializer.java:128)
assessment | at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:93)
assessment | at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:66)
assessment | at at ch.qos.logback.classic.spi.LogbackServiceProvider.initializeLoggerContext(LogbackServiceProvider.java:52)
assessment | at at ch.qos.logback.classic.spi.LogbackServiceProvider.initialize(LogbackServiceProvider.java:41)
assessment | at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:196)
assessment | at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:183)
assessment | at at org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:486)
assessment | at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:472)
assessment | at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:421)
assessment | at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:447)
assessment | at at io.micronaut.runtime.Micronaut.<clinit>(Micronaut.java:52)
assessment | at at fete.bird.Assessment.main(Assessment.java:16)
assessment | at at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
assessment | Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.pattern.color.CyanCompositeConverter
assessment | at at [email protected]/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:52)
assessment | at at [email protected]/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
assessment | at at [email protected]/java.lang.ClassLoader.loadClass(ClassLoader.java:121)
assessment | at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:56)
assessment | at ... 22 common frames omitted
assessment | 05:48:19,320 |-ERROR in ch.qos.logback.core.pattern.parser.Compiler@121fd0d3 - Failed to create converter for [%cyan] keyword
assessment | 05:48:19,320 |-ERROR in ch.qos.logback.core.pattern.parser.Compiler@121fd0d3 - Failed to instantiate converter class [ch.qos.logback.core.pattern.color.GrayCompositeConverter] as a composite converter for keyword [gray] ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ch.qos.logback.core.pattern.color.GrayCompositeConverter
This might be because of build/docker/native-optimized/config-dirs
, but I am not sure how to create those directories, so that docker compose will work.
I didn’t find the gradle task for this. Any help will be appreciated.