https://github.com/neticdk/helidon-demo
Small demo repo showcasing build of Helidon based microprofile service
https://github.com/neticdk/helidon-demo
Last synced: 5 months ago
JSON representation
Small demo repo showcasing build of Helidon based microprofile service
- Host: GitHub
- URL: https://github.com/neticdk/helidon-demo
- Owner: neticdk
- Created: 2021-02-02T08:06:08.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-12-22T06:39:03.000Z (6 months ago)
- Last Synced: 2025-12-23T17:59:40.783Z (6 months ago)
- Language: Java
- Size: 34.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Helidon Quickstart MP Example
This example implements a simple Hello World REST service using MicroProfile.
## Build and run
With JDK11+
```bash
mvn package
java -jar target/helidon-quickstart-mp.jar
```
## Exercise the application
```
curl -X GET http://localhost:8080/greet
{"message":"Hello World!"}
curl -X GET http://localhost:8080/greet/Joe
{"message":"Hello Joe!"}
curl -X PUT -H "Content-Type: application/json" -d '{"greeting" : "Hola"}' http://localhost:8080/greet/greeting
curl -X GET http://localhost:8080/greet/Jose
{"message":"Hola Jose!"}
```
## Try health and metrics
```
curl -s -X GET http://localhost:8080/health
{"outcome":"UP",...
. . .
# Prometheus Format
curl -s -X GET http://localhost:8080/metrics
# TYPE base:gc_g1_young_generation_count gauge
. . .
# JSON Format
curl -H 'Accept: application/json' -X GET http://localhost:8080/metrics
{"base":...
. . .
```
## Build the Docker Image
```
docker build -t helidon-quickstart-mp .
```
## Start the application with Docker
```
docker run --rm -p 8080:8080 helidon-quickstart-mp:latest
```
Exercise the application as described above
## Deploy the application to Kubernetes
```
kubectl cluster-info # Verify which cluster
kubectl get pods # Verify connectivity to cluster
kubectl create -f app.yaml # Deploy application
kubectl get service helidon-quickstart-mp # Verify deployed service
```
## Build a native image with GraalVM
GraalVM allows you to compile your programs ahead-of-time into a native
executable. See https://www.graalvm.org/docs/reference-manual/aot-compilation/
for more information.
You can build a native executable in 2 different ways:
* With a local installation of GraalVM
* Using Docker
### Local build
Download Graal VM at https://www.graalvm.org/downloads. We recommend
version `20.1.0` or later.
```
# Setup the environment
export GRAALVM_HOME=/path
# build the native executable
mvn package -Pnative-image
```
You can also put the Graal VM `bin` directory in your PATH, or pass
`-DgraalVMHome=/path` to the Maven command.
See https://github.com/oracle/helidon-build-tools/tree/master/helidon-maven-plugin#goal-native-image
for more information.
Start the application:
```
./target/helidon-quickstart-mp
```
### Multi-stage Docker build
Build the "native" Docker Image
```
docker build -t helidon-quickstart-mp-native -f Dockerfile.native .
```
Start the application:
```
docker run --rm -p 8080:8080 helidon-quickstart-mp-native:latest
```
## Build a Java Runtime Image using jlink
You can build a custom Java Runtime Image (JRI) containing the application jars and the JDK modules
on which they depend. This image also:
* Enables Class Data Sharing by default to reduce startup time.
* Contains a customized `start` script to simplify CDS usage and support debug and test modes.
You can build a custom JRI in two different ways:
* Local
* Using Docker
### Local build
```
# build the JRI
mvn package -Pjlink-image
```
See https://github.com/oracle/helidon-build-tools/tree/master/helidon-maven-plugin#goal-jlink-image
for more information.
Start the application:
```
./target/helidon-quickstart-mp-jri/bin/start
```
### Multi-stage Docker build
Build the JRI as a Docker Image
```
docker build -t helidon-quickstart-mp-jri -f Dockerfile.jlink .
```
Start the application:
```
docker run --rm -p 8080:8080 helidon-quickstart-mp-jri:latest
```
See the start script help:
```
docker run --rm helidon-quickstart-mp-jri:latest --help
```
Trigger build :construction_worker: