You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The generation of native binaries requires an installation of GraalVM 22.1.0+.
51
49
52
50
You can build a native binary using Maven as follows:
53
-
54
-
```
51
+
[source,bash]
52
+
----
55
53
mvn -Pnative-image install -DskipTests
56
-
```
57
-
58
-
The generation of the executable binary may take a few minutes to complete depending on
59
-
your hardware and operating system. When completed, the executable file will be available
60
-
under the `target` directory and be named after the artifact ID you have chosen during the
61
-
project generation phase.
54
+
----
62
55
56
+
The generation of the executable binary may take a few minutes to complete depending on your hardware and operating system. When completed, the executable file will be available under the `target` directory and named after the artifact ID you have chosen during the project generation phase.
63
57
58
+
== Try Metrics
64
59
65
-
## Try metrics
66
-
67
-
```
60
+
[source,bash]
61
+
----
68
62
# Prometheus Format
69
63
curl -s -X GET http://localhost:8080/metrics
70
64
# TYPE base:gc_g1_young_generation_count gauge
@@ -74,85 +68,80 @@ curl -s -X GET http://localhost:8080/metrics
74
68
curl -H 'Accept: application/json' -X GET http://localhost:8080/metrics
75
69
{"base":...
76
70
. . .
77
-
```
78
-
71
+
----
79
72
73
+
== Building the Docker Image
80
74
81
-
## Building the Docker Image
82
-
83
-
```
75
+
[source,bash]
76
+
----
84
77
docker build -t embedded-mongodb .
85
-
```
78
+
----
86
79
87
-
## Running the Docker Image
80
+
== Running the Docker Image
88
81
89
-
```
82
+
[source,bash]
83
+
----
90
84
docker run --rm -p 8080:8080 embedded-mongodb:latest
91
-
```
85
+
----
92
86
93
87
Exercise the application as described above.
94
-
95
88
96
-
## Run the application in Kubernetes
89
+
== Run the Application in Kubernetes
97
90
98
-
If you don’t have access to a Kubernetes cluster, you can [install one](https://helidon.io/docs/latest/#/about/kubernetes) on your desktop.
91
+
If you don’t have access to a Kubernetes cluster, you can https://helidon.io/docs/latest/#/about/kubernetes[install one] on your desktop.
99
92
100
-
### Verify connectivity to cluster
93
+
=== Verify Connectivity to Cluster
101
94
102
-
```
95
+
[source,bash]
96
+
----
103
97
kubectl cluster-info # Verify which cluster
104
98
kubectl get pods # Verify connectivity to cluster
105
-
```
99
+
----
106
100
107
-
### Deploy the application to Kubernetes
101
+
=== Deploy the Application to Kubernetes
108
102
109
-
```
103
+
[source,bash]
104
+
----
110
105
kubectl create -f app.yaml # Deploy application
111
106
kubectl get pods # Wait for quickstart pod to be RUNNING
112
-
kubectl get service embedded-mongodb # Get service info
107
+
kubectl get service embedded-mongodb # Get service info
113
108
kubectl port-forward service/embedded-mongodb 8081:8080 # Forward service port to 8081
114
-
```
109
+
----
115
110
116
111
You can now exercise the application as you did before but use the port number 8081.
117
112
118
-
After you’re done, cleanup.
119
-
120
-
```
113
+
After you’re done, cleanup:
114
+
[source,bash]
115
+
----
121
116
kubectl delete -f app.yaml
122
-
```
117
+
----
123
118
124
-
125
-
## Building a Custom Runtime Image
119
+
== Building a Custom Runtime Image
126
120
127
121
Build the custom runtime image using the jlink image profile:
128
-
129
-
```
122
+
[source,bash]
123
+
----
130
124
mvn package -Pjlink-image
131
-
```
132
-
133
-
This uses the helidon-maven-plugin to perform the custom image generation.
134
-
After the build completes it will report some statistics about the build including the reduction in image size.
125
+
----
135
126
136
-
The target/embedded-mongodb-jri directory is a self contained custom image of your application. It contains your application,
137
-
its runtime dependencies and the JDK modules it depends on. You can start your application using the provide start script:
127
+
This uses the helidon-maven-plugin to perform the custom image generation. After the build completes, it will report some statistics about the build, including the reduction in image size.
138
128
139
-
```
129
+
The `target/embedded-mongodb-jri` directory is a self-contained custom image of your application. It contains your application, its runtime dependencies, and the JDK modules it depends on. You can start your application using the provided start script:
130
+
[source,bash]
131
+
----
140
132
./target/embedded-mongodb-jri/bin/start
141
-
```
133
+
----
142
134
143
-
Class Data Sharing (CDS) Archive
144
-
Also included in the custom image is a Class Data Sharing (CDS) archive that improves your application’s startup
145
-
performance and in-memory footprint. You can learn more about Class Data Sharing in the JDK documentation.
135
+
=== Class Data Sharing (CDS) Archive
146
136
147
-
The CDS archive increases your image size to get these performance optimizations. It can be of significant size (tens of MB).
148
-
The size of the CDS archive is reported at the end of the build output.
137
+
Also included in the custom image is a Class Data Sharing (CDS) archive that improves your application’s startup performance and in-memory footprint. You can learn more about Class Data Sharing in the JDK documentation.
149
138
150
-
If you’d rather have a smaller image size (with a slightly increased startup time) you can skip the creation of the CDS
151
-
archive by executing your build like this:
139
+
The CDS archive increases your image size to get these performance optimizations. It can be of significant size (tens of MB). The size of the CDS archive is reported at the end of the build output.
152
140
153
-
```
141
+
If you’d rather have a smaller image size (with a slightly increased startup time), you can skip the creation of the CDS archive by executing your build like this:
0 commit comments