This project was generated with Quarkus Initializer version 2.7.
The application starts on http://localhost:8088.
This project has the purpose to get involved with Quarkus (Java, Maven), Docker and GitHub (Actions, Packages, Projects).
- Dockerfile: Multistage Dockerfile for native Build
- Guide: Multistage Native Build
- Default Settings: prod.properties
- Exposes
Port 8088
- Uses by default MySQL DB at
Port 3306
- Exposes
- Pull Image:
docker pull ghcr.io/home-planner-group/dynamic-query-api:latest
- Run Container:
docker run -d -p 8088:8088 --name query-api ghcr.io/home-planner-group/dynamic-query-api:latest
Http Entrypoint
|
Models --> Controller --> ExceptionHandler
|
Utility --> Database
|
MySQL DBMS
Explanation
- Http Entrypoint =
localhost:8088/request-path
- Controller = controller-package
- Models = model-package
- ExceptionHandler = exception-package
- Database = database-package
- Utility = files-package
- MySQL DBMS =
mysql://localhost:3306
or custom
- Download and Install Java Development Kit v17.0+
- Add
JAVA_HOME
- Update
PATH
- Add
- Download and Install Maven v3.8.4+
- Add
MAVEN_HOME
- Update
PATH
- Add
- Download and Install MySQL Server v8.0+
- Check application.properties for correct configuration
- Download and Install Docker
- Build Image:
docker build -t dynamic-query-api -f ./src/main/docker/Dockerfile .
- Build Image:
Continuous Integration Workflow
- .github/workflows/ci.yml
- Trigger: all pushes
- Executes
mvn install
- Run
mvn test
on JVM build with MySQL DB - Perform CodeQL Analysis with Java
Docker Image Delivery Workflow
- .github/workflows/docker-image.yml
- Trigger: manual or on published release
- Executes
docker build
with native Integration Test - Execute
docker push
to GitHub Packages
Running the application in dev mode
You can run your application in dev mode that enables live coding using:
./mvnw compile quarkus:dev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
Packaging and running the application
The application can be packaged using:
./mvnw package
It produces the quarkus-run.jar
file in the target/quarkus-app/
directory. Be aware that it’s not an über-jar as
the dependencies are copied into the target/quarkus-app/lib/
directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar
.
If you want to build an über-jar, execute the following command:
./mvnw package -Dquarkus.package.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar
.
Creating a native executable
You can create a native executable using:
./mvnw package -Pnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Pnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/dynamic-query-api-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
Related Guides
RESTEasy JAX-RS (guide): REST endpoint framework implementing JAX-RS and more