Chapter 4. Deploying Quarkus applications compiled to native executables
You can deploy your native Quarkus application to OpenShift using the Docker build strategy. You need to create a native executable for your application that targets the Linux X86_64 operating system. If your host operating system is different from this, you will need to create a native Linux executable using a container runtime like Docker or Podman.
Your Quarkus project includes pre-generated Dockerfiles with instructions. When you want to use a custom Dockerfile, you need to add the file in the src/main/docker
directory or anywhere inside the module. Additionally, you need to set the path to your Dockerfile using the quarkus.openshift.native-dockerfile
property.
Prerequisites
- A Linux X86_64 operating system or an OCI (Open Container Initiative) compatible container runtime, such as Podman or Docker.
-
Have a Quarkus Maven project that includes the
quarkus-openshift
extension. Login to OpenShift using
oc
and select your project.- To verify the OpenShift project namespace, see Verifying the OpenShift project namespace.
Procedure
- Change to the directory that contains your Quarkus project.
Configure the following properties in your
application.properties
file:Set the Docker build strategy:
quarkus.openshift.build-strategy=docker
Set the container runtime:
quarkus.native.container-build=true
(Optional) If you are using an untrusted certificate, configure the
KubernetesClient
:quarkus.kubernetes-client.trust-certs=true
(Optional) Expose the service to create an OpenShift route:
quarkus.openshift.expose=true
(Optional) Set the path to your custom Dockerfile:
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>
The following example shows the path to the
Dockerfile.custom-native
:quarkus.openshift.jvm-dockerfile=src/main/docker/Dockerfile.custom-native
(Optional) Specify the container engine:
To build a native executable with Podman:
quarkus.native.container-runtime=podman
To build a native executable with Docker:
quarkus.native.container-runtime=docker
Build a native executable, package, and deploy your application to OpenShift:
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true
Verification
View a list of pods associated with your current OpenShift project:
oc get pods
To retrieve the log output for your application’s pod, enter the following command where
<pod_name>
is the name of the latest pod prefixed with the name of your application:oc logs -f <pod_name>