jhcao23 / graalvm21lab

oracle graalvm for jdk 21 lab tutorial

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ReadMe

Prerequisite

  • install GraalVM CE
    sdk install java 21-graalce

verify versions

java -version # see 21
native-image --version # see 21

traditional build

plain build

  1. mvn build
mvn clean package && java -jar ./target/jibber-0.0.1-SNAPSHOT-exec.jar &
  1. test
curl http://localhost:8080/jibber
  1. kill process
fg # bring to foreground then Ctrl-C

docker build

  1. build docker image

    docker build -f ./00-containerise/Dockerfile \
        --build-arg JAR_FILE=./target/jibber-0.0.1-SNAPSHOT-exec.jar \
        -t localhost/jibber:java.01 .
  2. Query Docker to look at your newly built image:

    docker images | head -n2 && docker images localhost/jibber:java.01
  3. Run this image as follows:

    docker run --rm -d --name "jibber-java" -p 8080:8080 localhost/jibber:java.01
  4. Test

    curl http://localhost:8080/jibber
  5. check log

    docker logs jibber-java
  6. terminate container

    docker kill jibber-java

build native image

run native profile

  1. mvn build
mvn package -Pnative # take ~10min
# or use spring boot plugin
mvn -Pnative native:compile
  1. check and run
ls -lh target/jibber;
./target/jibber &
  1. test
curl http://localhost:8080/jibber
  1. terminate process
fg # bring to foreground then Ctrl-C

docker the native image

  1. build docker image
docker build -f ./01-native-image/Dockerfile \
    --build-arg APP_FILE=./target/jibber \
    -t localhost/jibber:native.01 .
  1. Take a look at the newly built image:
docker images | head -n2 && docker images localhost/jibber:native.01
  1. run docker image
docker run --rm -d --name "jibber-native" -p 8080:8080 localhost/jibber:native.01
  1. test
curl http://localhost:8080/jibber
  1. check log
docker logs jibber-native
  1. terminate the running docker
docker kill jibber-native

gradle build

gradle clean build && gradle bootRun;
gradle nativeCompile && build/native/nativeCompile/graalvm21lab;
# build docker native image, not yet working, wait for java 21
gradle bootBuildImage;

FaQ

  1. how to clean docker cache:
docker builder prune

Reference

  1. Lunar Lab
  2. sdkman
  3. Spring Blog Sep 2023

About

oracle graalvm for jdk 21 lab tutorial


Languages

Language:Java 76.4%Language:Shell 14.7%Language:Dockerfile 8.9%