end graalvm development without undertow and without spring boot dev tool

This commit is contained in:
Antoine 2020-09-06 18:01:11 +02:00
parent 1484b129b9
commit 2ccd2b0d28
Signed by: antoine
GPG Key ID: 098FB66FC0475E70
7 changed files with 42 additions and 163 deletions

View File

@ -16,13 +16,14 @@ ADD src/ /build/src/
ADD Makefile /build
# download dependencies and compile into layer
RUN ./mvnw -Pgraal compile
RUN ./mvnw -Pgraal,-no-graal compile
# generate graalvm image into another layer
RUN ./mvnw -Pgraal package
RUN ./mvnw -Pgraal,-no-graal package
#FROM debian:buster
FROM scratch
COPY --from=builder /build/target/wikiProject /wikiproject
COPY --from=builder /build/target/wiki-project /wikiproject
#COPY --from=builder /build/target/wiki-project-1.0-SNAPSHOT.jar /wiki-project-1.0-SNAPSHOT.jar
COPY --from=builder /tmp /tmp
ENTRYPOINT ["/wikiproject"]

View File

@ -26,4 +26,5 @@ docker-graal-build:
docker-graal-run: RUN_PORT=8080
docker-graal-run:
echo "$(firstword $(MAKECMDGOALS))"
docker run --rm -p 8080:$(RUN_PORT) docker.registry:5000/wikiproject-native --server.port=$(RUN_PORT)

46
pom.xml
View File

@ -11,10 +11,10 @@
<version>2.3.2.RELEASE</version>
</parent>
<groupId>fr.antoine-roux</groupId>
<artifactId>wikiProject</artifactId>
<groupId>tk.antoine-roux</groupId>
<artifactId>wiki-project</artifactId>
<version>${revision}</version>
<name>wikiProject</name>
<name>wiki-project</name>
<description>project use wikipedia streaming api https://stream.wikimedia.org/?doc#/Streams/get_v2_stream_test
</description>
@ -42,23 +42,17 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- <exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-undertow</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-devtools</artifactId>-->
<!-- <scope>runtime</scope>-->
<!-- <optional>true</optional>-->
<!-- </dependency>-->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>-->
</dependencies>
<build>
@ -113,6 +107,20 @@
</build>
<profiles>
<profile>
<id>no-graal</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
<profile>
<id>graal</id>
<dependencies>

View File

@ -1,8 +0,0 @@
Args=\
-Dspring.native.mode=feature \
-Dspring.native.verbose=true \
-Dspring.native.dump-config=/tmp/computed-reflect-config.json \
-Dspring.native.remove-unused-autoconfig=true
# -H:ReflectionConfigurationResources=${.}/reflect-config.json
# -Dspring.graal.skip-logback=true

View File

@ -0,0 +1,8 @@
Arg=\
--native-image-info \
-H:ReflectionConfigurationFiles=/build/target/classes/META-INF/native-image/tk.antoine-roux/wiki-project/reflection-config.json \
-Dspring.native.mode=feature \
-Dspring.native.verbose=false \
-Dspring.native.dump-config=/tmp/computed-reflect-config.json \
-Dspring.native.remove-unused-autoconfig=true \
-Dspring.graal.skip-logback=false

133
trace.md
View File

@ -1,133 +0,0 @@
____ _ _____ _
/ ___| _ __ _ __(_)_ __ __ _ | ___|__ __ _| |_ _ _ _ __ ___
\___ \| '_ \| '__| | '_ \ / _` | | |_ / _ \/ _` | __| | | | '__/ _ \
___) | |_) | | | | | | | (_| | | _| __/ (_| | |_| |_| | | | __/
|____/| .__/|_| |_|_| |_|\__, | |_| \___|\__,_|\__|\__,_|_| \___|
|_| |___/
Feature operating in FEATURE mode
Removing unused configurations
Use -Dspring.native.verbose=true on native-image call to see more detailed information from the feature
[wikiProject:91] (cap): 741.54 ms, 1.18 GB
WARNING: Could not resolve org.springframework.boot.loader.LaunchedURLClassLoader for reflection configuration.
Found #6 types in static reflection list to register
Skipping #6 types not on the classpath
Attempting proxy registration of #16 proxies
Skipped registration of #9 proxies - relevant types not on classpath
[wikiProject:91] setup: 2,324.54 ms, 1.18 GB
Registering resources - #35 patterns
Registering resources - #2 bundles
Processing META-INF/spring.factories files...
spring.factories processing, problem adding access for key org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer: javax/validation/ValidationException
Processing spring.factories - ApplicationListener lists #10 application listeners
Processing spring.factories - PropertySourceLoader lists #2 property source loaders
spring.factories processing, problem adding access for key org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer: org/springframework/jdbc/CannotGetJdbcConnectionException
Processing spring.factories - ApplicationListener lists #0 application listeners
Processing spring.factories - EnableAutoConfiguration lists #127 configurations
Excluding 102 auto-configurations from spring.factories file
WARNING: unable to trim META-INF/spring.factories (for example to disable unused auto configurations) because an existing resource-config is directly including it: /build/target/wikiProject-1.0-SNAPSHOT.jar!META-INF/native-image/resource-config.json
Processing spring.factories - ApplicationListener lists #1 application listeners
Processing existing META-INF/spring.components files...
Registered 1 entries
Configuring initialization time for specific types and packages:
#88 buildtime-init-classes #23 buildtime-init-packages #33 runtime-init-classes #1 runtime-init-packages
Warning: class initialization of class org.springframework.boot.validation.MessageInterpolatorFactory failed with exception java.lang.NoClassDefFoundError: javax/validation/ValidationException. This class will be initialized at run time because option --allow-incomplete-classpath is used for image building. Use the option --initialize-at-run-time=org.springframework.boot.validation.MessageInterpolatorFactory to explicitly request delayed initialization of this class.
Number of types dynamically registered for reflective access: #2024
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
Warning: class initialization of class org.springframework.boot.validation.MessageInterpolatorFactory failed with exception java.lang.NoClassDefFoundError: javax/validation/ValidationException. This class will be initialized at run time because option --allow-incomplete-classpath is used for image building. Use the option --initialize-at-run-time=org.springframework.boot.validation.MessageInterpolatorFactory to explicitly request delayed initialization of this class.
Number of types dynamically registered for reflective access: #2024
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fiWARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
WARNING: Could not register reflection metadata for org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidationException.
WARNING: Could not register reflection metadata for org.springframework.web.multipart.commons.CommonsMultipartResolver. Reason: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration. Reason: java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder.
WARNING: Could not register reflection metadata for org.springframework.http.ReactiveHttpInputMessage. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Flux.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer. Reason: java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException.
WARNING: Could not register reflection metadata for org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration. Reason: java.lang.NoClassDefFoundError: javax/json/bind/Jsonb.
WARNING: Could not register reflection metadata for org.springframework.http.server.reactive.HttpHandler. Reason: java.lang.NoClassDefFoundError: reactor/core/publisher/Mono.
[wikiProject:91] (clinit): 6,528.65 ms, 2.67 GB
[wikiProject:91] (typeflow): 331,780.47 ms, 2.67 GB
[wikiProject:91] (objects): 128,127.89 ms, 2.67 GB
[wikiProject:91] (features): 8,933.99 ms, 2.67 GB
[wikiProject:91] analysis: 485,228.58 ms, 2.67 GB
[wikiProject:91] universe: 17,923.31 ms, 2.67 GB
[wikiProject:91] (parse): 10,750.64 ms, 2.13 GB
[wikiProject:91] (inline): 11,753.82 ms, 2.67 GB
[wikiProject:91] (compile): 56,270.16 ms, 2.71 GB
[wikiProject:91] compile: 81,957.83 ms, 2.71 GB
[wikiProject:91] image: 9,000.77 ms, 2.48 GB
[wikiProject:91] write: 1,158.10 ms, 2.48 GB
[wikiProject:91] [total]: 605,656.30 ms, 2.48 GB
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.2.RELEASE:repackage (repackage) @ wikiProject ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10:40 min
[INFO] Finished at: 2020-08-17T22:31:28Z
[INFO] ------------------------------------------------------------------------
Removing intermediate container a8338a0f8da1
---> 8102c76cc125
Step 12/14 : FROM debian:buster
buster: Pulling from library/debian
d6ff36c9ec48: Pull complete
Digest: sha256:1e74c92df240634a39d050a5e23fb18f45df30846bb222f543414da180b47a5d
Status: Downloaded newer image for debian:buster
---> ee11c54e6bb7
Step 13/14 : COPY --from=builder /build/target/wikiProject /wikiproject
---> a214080a74d7
Step 14/14 : ENTRYPOINT ["/wikiproject"]
---> Running in ae1caf05bf0b
Removing intermediate container ae1caf05bf0b
---> 163f952c5bba
Successfully built 163f952c5bba
Successfully tagged docker.registry:5000/wikiproject-native:latest