Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fugerit-org/graalkus
Graalkus: Let Quarkus fly high with GraalVM.
https://github.com/fugerit-org/graalkus
container docker graalvm graalvm-native-image java quarkus
Last synced: 5 days ago
JSON representation
Graalkus: Let Quarkus fly high with GraalVM.
- Host: GitHub
- URL: https://github.com/fugerit-org/graalkus
- Owner: fugerit-org
- License: mit
- Created: 2024-11-30T08:49:59.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-01-29T22:07:50.000Z (7 days ago)
- Last Synced: 2025-01-29T23:18:31.629Z (7 days ago)
- Topics: container, docker, graalvm, graalvm-native-image, java, quarkus
- Language: Shell
- Homepage: https://graalkus.fugerit.org/
- Size: 12.1 MB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# graalkus
[![Keep a Changelog v1.1.0 badge](https://img.shields.io/badge/changelog-Keep%20a%20Changelog%20v1.1.0-%23E05735)](https://github.com/fugerit-org/graalkus/blob/master/CHANGELOG.md)
[![license](https://img.shields.io/badge/License-MIT%20License-teal.svg)](https://opensource.org/license/mit)
[![code of conduct](https://img.shields.io/badge/conduct-Contributor%20Covenant-purple.svg)](https://github.com/fugerit-org/fj-universe/blob/main/CODE_OF_CONDUCT.md)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=fugerit-org_graalkus&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=fugerit-org_graalkus)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=fugerit-org_graalkus&metric=coverage)](https://sonarcloud.io/summary/new_code?id=fugerit-org_graalkus)
[![Docker images](https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker)](https://hub.docker.com/repository/docker/fugeritorg/graalkus/general)[![Java runtime version](https://img.shields.io/badge/run%20on-java%2021+-%23113366.svg?style=for-the-badge&logo=openjdk&logoColor=white)](https://universe.fugerit.org/src/docs/versions/java21.html)
[![Java build version](https://img.shields.io/badge/build%20on-GraalVM%2021+-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white)](https://universe.fugerit.org/src/docs/versions/gvm21.html)
[![Apache Maven](https://img.shields.io/badge/Apache%20Maven-3.9.0+-C71A36?style=for-the-badge&logo=Apache%20Maven&logoColor=white)](https://universe.fugerit.org/src/docs/versions/maven3_9.html)## Documentation
NOTE: The documentation (HTML, PDF and slides) is produced with a doc-as-code approach. Only my IDE and GIT have been used. No office automation tools were harmed in the making of this project 😉.
[Here you can find project documentation index](https://graalkus.fugerit.org/) published through GitHub pages.
Introduction slides are available thanks to [Slidev](https://sli.dev/) :
[![Slideshow](https://img.shields.io/badge/HTML-Slideshow-greeb?style=for-the-badge)](https://graalkus.fugerit.org/graalkus-slidev/ "Go to project Slideshow")
While [AsciiDoc](https://asciidoc.org/) full documentation is here :
[![HTML - Documentation](https://img.shields.io/badge/HTML-Documentation-blue?style=for-the-badge)](https://graalkus.fugerit.org/book/ "Go to project HTML documentation")
[![PDF - Documentation](https://img.shields.io/badge/PDF-Documentation-red?style=for-the-badge)](https://graalkus.fugerit.org/book/graalkus.pdf "Go to project PDF documentation")## Quickstart
Requirement :
* maven 3.9.x
* java 21+ (GraalVM for native version)NOTE: All benchmarks has been run on Oracle GraalVM 23.
1. Verify the app
```shell
mvn verify
```2. Start the app
```shell
mvn quarkus:dev
```3. Try the app
Open the [swagger-ui](http://localhost:8080/q/swagger-ui/)
Test available paths (for instance : [/doc/example.md](http://localhost:8080/doc/example.md))
## Native version
If you picked only native modules, you should be able to build and run the AOT version (GraalVM 21+ needed).
Further documentation :
* [List of modules and native support](https://venusdocs.fugerit.org/guide/#available-extensions)
* [Fugerit Venus Doc native support introduction](https://venusdocs.fugerit.org/guide/#doc-native-support)1. Build and verify
```shell
mvn package -Dnative
```2. Start
```shell
./target/graalkus-*-runner
```## Container deployment
Requirement :
* Container environment (Docker or Podman)
> Note: It is recommended to install the latest versions of [Docker Desktop](https://www.docker.com/products/docker-desktop/) or [Podman Desktop](https://podman-desktop.io/).
Pick a docker compose file (inside the [src/main/docker](src/main/docker)) and run by using docker compose or podman compose. Se example below:
```shell
# If you have a docker environment
# This syntax of docker compose is available from then Docker Desktop 3.4
docker compose -f src/main/docker/docker-compose.yml up -d# If you have a podman environment
# This syntax of podman compose is available from the Podman 4.0
podman compose -f src/main/docker/docker-compose.yml up -d
```NOTE: both amd64 and arm64 (including macOS) [pre-built images](https://hub.docker.com/r/fugeritorg/graalkus) are available.
## Run benchmark with siege
Requirement :
* siege
* psrecord (optional for plotting)Start the application and run :
```shell
./src/main/script/bench-graph-siege.sh
```The result output file is in the `target` directory.
## Run benchmark with h2load
Requirement :
* h2load
* psrecord (optional for plotting)Start the application and run :
```shell
./src/main/script/bench-graph-h2-load.sh
```The result output file is in the `target` directory.
## Run benchmark on different url
Default for benchmark is to run on http://localhost:8080.
To run on a different url use the -u parameter, for instance :
```shell
./src/main/script/bench-graph-h2-load.sh -u http://localhost:8081
```The result output file is in the `target` directory.
## Run benchmark with plotting
To run benchmark with plotting, psrecord should be installed.
Build the application without launching it, and run :
```shell
mvn install -Dnative
./src/main/script/bench-graph-h2-load.sh -m AOT
```or
```shell
mvn package
./src/main/script/bench-graph-h2-load.sh -m JIT
```The result output file is in the `target` directory.
## Build the documentation
Requirement :
* NodeJS 20+
* Mermaid CLI### AsciiDoc documentation
[AsciiDoc](https://asciidoc.org/) source folder is located at :
[src/main/docs/asciidoc](src/main/docs/asciidoc)
It is possible to build HTML and PDF documentation running :
```shell
mvn install -Pdocs
```Output will be in `target/site` directory.
### Slidev slideshow
[Slidev](https://sli.dev/) source folder is located at :
[src/main/docs/slidev/graalkus](src/main/docs/slidev/graalkus)
To run the slideshow in dev mode just :
```shell
cd src/main/docs/slidev/graalkus
npm install
npm run dev
```For a production build :
```shell
mvn clean install -Pslidev
serve src/main/docs/slidev/graalkus
```