Skip to content

Commit 8f92221

Browse files
Merge pull request #20 from timroster/quarkus-updt
Update quarkus version to latest - we will verify it in the workshop.
2 parents 3d693e6 + 4f61b44 commit 8f92221

10 files changed

+169
-94
lines changed

code/articles/.dockerignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
deployment/
2-
target/
2+
# target/

code/articles/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ COPY --from=BUILD --chown=1001 /usr/src/app/target/quarkus-app/quarkus/ /deploym
2929
# **********
3030
# Local and Code Engine
3131
EXPOSE 8083
32-
CMD ["java", "-Xmx128m", "-XX:+IdleTuningGcOnIdle", "-Xtune:virtualized", "-Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL}", "-jar", "/deployments/quarkus-run.jar"]
32+
CMD ["java", "-Xmx128m", "-XX:+IdleTuningGcOnIdle", "-Xtune:virtualized", "-Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL}", "-jar", "/deployments/quarkus-run.jar"]

code/articles/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<maven.compiler.target>11</maven.compiler.target>
1313
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1414
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
15-
<quarkus-plugin.version>1.13.4.Final</quarkus-plugin.version>
15+
<quarkus-plugin.version>2.9.0.Final</quarkus-plugin.version>
1616
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
1717
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
18-
<quarkus.platform.version>1.13.4.Final</quarkus.platform.version>
18+
<quarkus.platform.version>2.9.0.Final</quarkus.platform.version>
1919
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
2020
</properties>
2121
<dependencyManagement>
+70-34
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,90 @@
11
####
22
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
33
#
4-
# Before building the docker image run:
4+
# Before building the container image run:
55
#
6-
# mvn package
6+
# ./mvnw package
77
#
88
# Then, build the image with:
99
#
10-
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/web-api-secure-jvm .
10+
# docker build -f src/main/docker/Dockerfile.jvm -t quay.io/$REPOSITORY/articles-ce:v11-jvm .
1111
#
12-
# Then run the container using:
12+
# Then push the container using:
1313
#
14-
# docker run -i --rm -p 8080:8080 quarkus/web-api-secure-jvm
14+
# docker push quay.io/$REPOSITORY/articles-ce:v11-jvm
1515
#
1616
# If you want to include the debug port into your docker image
17-
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5050
18-
#
19-
# Then run the container using :
17+
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005
2018
#
21-
# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/web-api-secure-jvm
19+
#
20+
# This image uses the `run-java.sh` script to run the application.
21+
# This scripts computes the command line to execute your Java application, and
22+
# includes memory/GC tuning.
23+
# You can configure the behavior using the following environment properties:
24+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
25+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
26+
# in JAVA_OPTS (example: "-Dsome.property=foo")
27+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
28+
# used to calculate a default maximal heap memory based on a containers restriction.
29+
# If used in a container without any memory constraints for the container then this
30+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
31+
# of the container available memory as set here. The default is `50` which means 50%
32+
# of the available memory is used as an upper boundary. You can skip this mechanism by
33+
# setting this value to `0` in which case no `-Xmx` option is added.
34+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
35+
# is used to calculate a default initial heap memory based on the maximum heap memory.
36+
# If used in a container without any memory constraints for the container then this
37+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
38+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
39+
# is used as the initial heap size. You can skip this mechanism by setting this value
40+
# to `0` in which case no `-Xms` option is added (example: "25")
41+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
42+
# This is used to calculate the maximum value of the initial heap memory. If used in
43+
# a container without any memory constraints for the container then this option has
44+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
45+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
46+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
47+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
48+
# when things are happening. This option, if set to true, will set
49+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
50+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
51+
# true").
52+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
53+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
54+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
55+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
56+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
57+
# (example: "20")
58+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
59+
# (example: "40")
60+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
61+
# (example: "4")
62+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
63+
# previous GC times. (example: "90")
64+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
65+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
66+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
67+
# contain the necessary JRE command-line options to specify the required GC, which
68+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
69+
# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
70+
# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
71+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
72+
# accessed directly. (example: "foo.example.com,bar.example.com")
2273
#
2374
###
24-
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1
25-
26-
ARG JAVA_PACKAGE=java-11-openjdk-headless
27-
ARG RUN_JAVA_VERSION=1.3.8
75+
FROM registry.access.redhat.com/ubi8/openjdk-11:1.12
2876

2977
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
3078

31-
# Install java and the run-java script
32-
# Also set up permissions for user `1001`
33-
RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \
34-
&& microdnf update \
35-
&& microdnf clean all \
36-
&& mkdir /deployments \
37-
&& chown 1001 /deployments \
38-
&& chmod "g+rwX" /deployments \
39-
&& chown 1001:root /deployments \
40-
&& curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \
41-
&& chown 1001 /deployments/run-java.sh \
42-
&& chmod 540 /deployments/run-java.sh \
43-
&& echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security
4479

45-
# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size.
46-
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
47-
48-
COPY target/lib/* /deployments/lib/
49-
COPY target/*-runner.jar /deployments/app.jar
80+
# We make four distinct layers so if there are application changes the library layers can be re-used
81+
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
82+
COPY --chown=185 target/quarkus-app/*.jar /deployments/
83+
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
84+
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
5085

5186
EXPOSE 8080
52-
USER 1001
53-
54-
ENTRYPOINT [ "/deployments/run-java.sh" ]
87+
USER 185
88+
ENV AB_JOLOKIA_OFF=""
89+
ENV JAVA_OPTS='-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL}'
90+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
####
2-
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
33
#
4-
# Before building the docker image run:
4+
# Before building the container image run:
55
#
6-
# mvn package -Pnative -Dquarkus.native.container-build=true
6+
# ./mvnw package -Pnative
77
#
88
# Then, build the image with:
99
#
10-
# docker build -f src/main/docker/Dockerfile.native -t quarkus/web-api-secure .
10+
# docker build -f src/main/docker/Dockerfile.native -t quay.io/$REPOSITORY/articles-ce:v11-native .
1111
#
12-
# Then run the container using:
12+
# Then push the container
1313
#
14-
# docker run -i --rm -p 8080:8080 quarkus/web-api-secure
14+
# docker push quay.io/$REPOSITORY/articles-ce:v11-native
1515
#
1616
###
17-
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1
17+
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.5
1818
WORKDIR /work/
19+
RUN chown 1001 /work \
20+
&& chmod "g+rwX" /work \
21+
&& chown 1001:root /work
1922
COPY --chown=1001:root target/*-runner /work/application
2023

2124
EXPOSE 8080
2225
USER 1001
2326

24-
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
27+
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Djava.util.logging.manager=org.jboss.logmanager.LogManager", "-Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL}"]

code/web-api/.dockerignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
deployment/
2-
target/
2+
# target/

code/web-api/docker_entrypoint_start-quarkus.sh

-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ echo "Execute java command "
1111
echo "**********************************"
1212

1313
java -Xmx128m \
14-
-Xscmaxaot100m \
1514
-XX:+IdleTuningGcOnIdle \
1615
-Xtune:virtualized \
17-
-Xscmx128m \
18-
-Xshareclasses:cacheDir=/opt/shareclasses \
1916
-Dcns.articles-url=${CNS_ARTICLES_URL} \
2017
-Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL} \
2118
-jar \

code/web-api/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<maven.compiler.target>11</maven.compiler.target>
1313
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1414
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
15-
<quarkus-plugin.version>1.13.4.Final</quarkus-plugin.version>
15+
<quarkus-plugin.version>2.9.0.Final</quarkus-plugin.version>
1616
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
1717
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
18-
<quarkus.platform.version>1.13.4.Final</quarkus.platform.version>
18+
<quarkus.platform.version>2.9.0.Final</quarkus.platform.version>
1919
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
2020
</properties>
2121
<dependencyManagement>
+70-34
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,90 @@
11
####
22
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
33
#
4-
# Before building the docker image run:
4+
# Before building the container image run:
55
#
6-
# mvn package
6+
# ./mvnw package
77
#
88
# Then, build the image with:
99
#
10-
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/web-api-secure-jvm .
10+
# docker build -f src/main/docker/Dockerfile.jvm -t quay.io/$REPOSITORY/web-api-ce:v11-jvm .
1111
#
12-
# Then run the container using:
12+
# Then push the container using:
1313
#
14-
# docker run -i --rm -p 8080:8080 quarkus/web-api-secure-jvm
14+
# docker push quay.io/$REPOSITORY/web-api-ce:v11-jvm
1515
#
1616
# If you want to include the debug port into your docker image
17-
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5050
18-
#
19-
# Then run the container using :
17+
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005
2018
#
21-
# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/web-api-secure-jvm
19+
#
20+
# This image uses the `run-java.sh` script to run the application.
21+
# This scripts computes the command line to execute your Java application, and
22+
# includes memory/GC tuning.
23+
# You can configure the behavior using the following environment properties:
24+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
25+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
26+
# in JAVA_OPTS (example: "-Dsome.property=foo")
27+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
28+
# used to calculate a default maximal heap memory based on a containers restriction.
29+
# If used in a container without any memory constraints for the container then this
30+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
31+
# of the container available memory as set here. The default is `50` which means 50%
32+
# of the available memory is used as an upper boundary. You can skip this mechanism by
33+
# setting this value to `0` in which case no `-Xmx` option is added.
34+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
35+
# is used to calculate a default initial heap memory based on the maximum heap memory.
36+
# If used in a container without any memory constraints for the container then this
37+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
38+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
39+
# is used as the initial heap size. You can skip this mechanism by setting this value
40+
# to `0` in which case no `-Xms` option is added (example: "25")
41+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
42+
# This is used to calculate the maximum value of the initial heap memory. If used in
43+
# a container without any memory constraints for the container then this option has
44+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
45+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
46+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
47+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
48+
# when things are happening. This option, if set to true, will set
49+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
50+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
51+
# true").
52+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
53+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
54+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
55+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
56+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
57+
# (example: "20")
58+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
59+
# (example: "40")
60+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
61+
# (example: "4")
62+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
63+
# previous GC times. (example: "90")
64+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
65+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
66+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
67+
# contain the necessary JRE command-line options to specify the required GC, which
68+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
69+
# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
70+
# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
71+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
72+
# accessed directly. (example: "foo.example.com,bar.example.com")
2273
#
2374
###
24-
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1
25-
26-
ARG JAVA_PACKAGE=java-11-openjdk-headless
27-
ARG RUN_JAVA_VERSION=1.3.8
75+
FROM registry.access.redhat.com/ubi8/openjdk-11:1.12
2876

2977
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
3078

31-
# Install java and the run-java script
32-
# Also set up permissions for user `1001`
33-
RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \
34-
&& microdnf update \
35-
&& microdnf clean all \
36-
&& mkdir /deployments \
37-
&& chown 1001 /deployments \
38-
&& chmod "g+rwX" /deployments \
39-
&& chown 1001:root /deployments \
40-
&& curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \
41-
&& chown 1001 /deployments/run-java.sh \
42-
&& chmod 540 /deployments/run-java.sh \
43-
&& echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security
4479

45-
# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size.
46-
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
47-
48-
COPY target/lib/* /deployments/lib/
49-
COPY target/*-runner.jar /deployments/app.jar
80+
# We make four distinct layers so if there are application changes the library layers can be re-used
81+
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
82+
COPY --chown=185 target/quarkus-app/*.jar /deployments/
83+
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
84+
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
5085

5186
EXPOSE 8080
52-
USER 1001
53-
54-
ENTRYPOINT [ "/deployments/run-java.sh" ]
87+
USER 185
88+
ENV AB_JOLOKIA_OFF=""
89+
ENV JAVA_OPTS='-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL} -Dcns.articles-url=${CNS_ARTICLES_URL}'
90+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
####
2-
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
33
#
4-
# Before building the docker image run:
4+
# Before building the container image run:
55
#
6-
# mvn package -Pnative -Dquarkus.native.container-build=true
6+
# ./mvnw package -Pnative
77
#
88
# Then, build the image with:
99
#
10-
# docker build -f src/main/docker/Dockerfile.native -t quarkus/web-api-secure .
10+
# docker build -f src/main/docker/Dockerfile.native -t quay.io/$REPOSITORY/web-api-ce:v11-native .
1111
#
12-
# Then run the container using:
12+
# Then push the container:
1313
#
14-
# docker run -i --rm -p 8080:8080 quarkus/web-api-secure
14+
# docker push quay.io/$REPOSITORY/web-api-ce:v11-native
1515
#
1616
###
17-
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1
17+
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.5
1818
WORKDIR /work/
19+
RUN chown 1001 /work \
20+
&& chmod "g+rwX" /work \
21+
&& chown 1001:root /work
1922
COPY --chown=1001:root target/*-runner /work/application
2023

2124
EXPOSE 8080
2225
USER 1001
2326

24-
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
27+
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Djava.util.logging.manager=org.jboss.logmanager.LogManager", "-Dcns.quarkus.oidc.auth-server-url=${QUARKUS_OIDC_AUTH_SERVER_URL}", "-Dcns.articles-url=${CNS_ARTICLES_URL}"]

0 commit comments

Comments
 (0)