From 7ec6c4616f948babc8c8e7626bd1432ae3bf254a Mon Sep 17 00:00:00 2001 From: Manuel Aude Morales Date: Fri, 7 May 2021 04:12:24 -0500 Subject: [PATCH] Ignore vs code from root directory. --- .gitignore | 7 +- micro-java/.dockerignore | 5 + micro-java/pom.xml | 182 ++++++++----- .../src/main/docker/Dockerfile.fast-jar | 54 ++++ micro-java/src/main/docker/Dockerfile.jvm | 51 ++++ micro-java/src/main/docker/Dockerfile.native | 27 ++ .../openshift/hello/HelloResource.java | 21 +- .../openshift/hello/JaxRsActivator.java | 8 - .../resources/META-INF/resources/index.html | 242 ++++++++++++++++++ .../application.properties} | 0 .../openshift/hello/HelloResourceTest.java | 21 ++ .../hello/NativeHelloResourceIT.java | 9 + 12 files changed, 538 insertions(+), 89 deletions(-) create mode 100644 micro-java/.dockerignore create mode 100644 micro-java/src/main/docker/Dockerfile.fast-jar create mode 100644 micro-java/src/main/docker/Dockerfile.jvm create mode 100644 micro-java/src/main/docker/Dockerfile.native delete mode 100644 micro-java/src/main/java/com/redhat/training/openshift/hello/JaxRsActivator.java create mode 100644 micro-java/src/main/resources/META-INF/resources/index.html rename micro-java/src/main/{fabric8/.gitkeep => resources/application.properties} (100%) create mode 100644 micro-java/src/test/java/com/redhat/training/openshift/hello/HelloResourceTest.java create mode 100644 micro-java/src/test/java/com/redhat/training/openshift/hello/NativeHelloResourceIT.java diff --git a/.gitignore b/.gitignore index edaa9c6..541a8b1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,11 @@ *.ear hs_err_pid* +########################## +# VS Code +########################## +.vscode/ + ########################## ## Maven ########################## @@ -57,4 +62,4 @@ nb-configuration.xml ########################## ## OS X ########################## -.DS_Store \ No newline at end of file +.DS_Store diff --git a/micro-java/.dockerignore b/micro-java/.dockerignore new file mode 100644 index 0000000..94810d0 --- /dev/null +++ b/micro-java/.dockerignore @@ -0,0 +1,5 @@ +* +!target/*-runner +!target/*-runner.jar +!target/lib/* +!target/quarkus-app/* \ No newline at end of file diff --git a/micro-java/pom.xml b/micro-java/pom.xml index 9c8b9cd..b3c81f0 100644 --- a/micro-java/pom.xml +++ b/micro-java/pom.xml @@ -1,96 +1,150 @@ - - - + + 4.0.0 - - com.redhat.training.openshift - hello - 1.0 - war - Red Hat Training Hello Java app - Hello microservice using Thorntail - + com.redhat.training.openshift.hello + micro-java2 + 1.0.0-SNAPSHOT - - + 3.8.1 + true + 11 + 11 UTF-8 - false - - - 2.4.0.Final - - - 3.1 - 2.16 - 2.5 - 4.1.0 - - - 1.8 - 1.8 + UTF-8 + 1.11.6.Final-redhat-00001 + quarkus-universe-bom + com.redhat.quarkus + 1.11.6.Final-redhat-00001 + 3.0.0-M5 - - - io.thorntail - bom-all - ${version.thorntail} - import + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} pom + import - - io.thorntail - cdi + io.quarkus + quarkus-arc - io.thorntail - jaxrs + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test - + + + + true + + + false + + redhat + https://maven.repository.redhat.com/ga + + + + + + true + + + false + + redhat + https://maven.repository.redhat.com/ga + + - - hello - - - io.thorntail - thorntail-maven-plugin - ${version.thorntail} + io.quarkus + quarkus-maven-plugin + ${quarkus-plugin.version} + true - package + build + generate-code + generate-code-tests - io.fabric8 - fabric8-maven-plugin - ${version.fabric8.plugin} - - - fmp - - resource - build - - - + maven-compiler-plugin + ${compiler-plugin.version} + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + org.eclipse.jkube + openshift-maven-plugin + 1.2.0 - + + + native + + + native + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + native + + + diff --git a/micro-java/src/main/docker/Dockerfile.fast-jar b/micro-java/src/main/docker/Dockerfile.fast-jar new file mode 100644 index 0000000..5fa2aef --- /dev/null +++ b/micro-java/src/main/docker/Dockerfile.fast-jar @@ -0,0 +1,54 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package -Dquarkus.package.type=fast-jar +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.fast-jar -t quarkus/micro-java2-fast-jar . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/micro-java2-fast-jar +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5050 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/micro-java2-fast-jar +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 + +ARG JAVA_PACKAGE=java-11-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && 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 \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +# We make four distinct layers so if there are application changes the library layers can be re-used +COPY --chown=1001 target/quarkus-app/lib/ /deployments/lib/ +COPY --chown=1001 target/quarkus-app/*.jar /deployments/ +COPY --chown=1001 target/quarkus-app/app/ /deployments/app/ +COPY --chown=1001 target/quarkus-app/quarkus/ /deployments/quarkus/ + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] diff --git a/micro-java/src/main/docker/Dockerfile.jvm b/micro-java/src/main/docker/Dockerfile.jvm new file mode 100644 index 0000000..ce8612b --- /dev/null +++ b/micro-java/src/main/docker/Dockerfile.jvm @@ -0,0 +1,51 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/micro-java2-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/micro-java2-jvm +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5050 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/micro-java2-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 + +ARG JAVA_PACKAGE=java-11-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && 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 \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +COPY target/lib/* /deployments/lib/ +COPY target/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] diff --git a/micro-java/src/main/docker/Dockerfile.native b/micro-java/src/main/docker/Dockerfile.native new file mode 100644 index 0000000..f6f3935 --- /dev/null +++ b/micro-java/src/main/docker/Dockerfile.native @@ -0,0 +1,27 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the container image run: +# +# ./mvnw package -Pnative +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/micro-java2 . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/micro-java2 +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 +WORKDIR /work/ +RUN chown 1001 /work \ + && chmod "g+rwX" /work \ + && chown 1001:root /work +COPY --chown=1001:root target/*-runner /work/application + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/micro-java/src/main/java/com/redhat/training/openshift/hello/HelloResource.java b/micro-java/src/main/java/com/redhat/training/openshift/hello/HelloResource.java index 41084a4..99cccae 100644 --- a/micro-java/src/main/java/com/redhat/training/openshift/hello/HelloResource.java +++ b/micro-java/src/main/java/com/redhat/training/openshift/hello/HelloResource.java @@ -1,27 +1,16 @@ package com.redhat.training.openshift.hello; -import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; -@Path("/") +@Path("/api") public class HelloResource { @GET - @Path("/hello") - @Produces("text/plain") + @Produces(MediaType.TEXT_PLAIN) public String hello() { - String hostname = System.getenv().getOrDefault("HOSTNAME", "unknown"); - String message = System.getenv().getOrDefault("APP_MSG", null); - String response = ""; - - if (message == null) { - response = "Hello world from host "+hostname+"\n"; - } else { - response = "Hello world from host ["+hostname+"].\n"; - response += "Message received = "+message+"\n"; - } - return response; + return "Hello RESTEasy"; } -} +} \ No newline at end of file diff --git a/micro-java/src/main/java/com/redhat/training/openshift/hello/JaxRsActivator.java b/micro-java/src/main/java/com/redhat/training/openshift/hello/JaxRsActivator.java deleted file mode 100644 index 7a6a14a..0000000 --- a/micro-java/src/main/java/com/redhat/training/openshift/hello/JaxRsActivator.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.redhat.training.openshift.hello; - -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; - -@ApplicationPath("/api") -public class JaxRsActivator extends Application { -} diff --git a/micro-java/src/main/resources/META-INF/resources/index.html b/micro-java/src/main/resources/META-INF/resources/index.html new file mode 100644 index 0000000..0202a31 --- /dev/null +++ b/micro-java/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,242 @@ + + + + + micro-java2 - 1.0.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus cloud application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: ./mvnw compile quarkus:dev. +

+
    +
  • Play with your example code in src/main/java: +
    +
    +
    +

    RESTEasy JAX-RS

    + Guide +
    +
    +

    A Hello World RESTEasy resource

    + +
    +
    + GET /api +
    +
    + +
    +
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties.
  • +
+

Do you like Quarkus?

+

Go give it a star on GitHub.

+
+
+
+

Application

+
    +
  • GroupId: com.redhat.training.openshift.hello
  • +
  • ArtifactId: micro-java2
  • +
  • Version: 1.0.0-SNAPSHOT
  • +
  • Quarkus Version: 1.11.6.Final-redhat-00001
  • +
+
+ +
+
+ + \ No newline at end of file diff --git a/micro-java/src/main/fabric8/.gitkeep b/micro-java/src/main/resources/application.properties similarity index 100% rename from micro-java/src/main/fabric8/.gitkeep rename to micro-java/src/main/resources/application.properties diff --git a/micro-java/src/test/java/com/redhat/training/openshift/hello/HelloResourceTest.java b/micro-java/src/test/java/com/redhat/training/openshift/hello/HelloResourceTest.java new file mode 100644 index 0000000..d32cb12 --- /dev/null +++ b/micro-java/src/test/java/com/redhat/training/openshift/hello/HelloResourceTest.java @@ -0,0 +1,21 @@ +package com.redhat.training.openshift.hello; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class HelloResourceTest { + + @Test + public void testHelloEndpoint() { + given() + .when().get("/api") + .then() + .statusCode(200) + .body(is("Hello RESTEasy")); + } + +} \ No newline at end of file diff --git a/micro-java/src/test/java/com/redhat/training/openshift/hello/NativeHelloResourceIT.java b/micro-java/src/test/java/com/redhat/training/openshift/hello/NativeHelloResourceIT.java new file mode 100644 index 0000000..82f180a --- /dev/null +++ b/micro-java/src/test/java/com/redhat/training/openshift/hello/NativeHelloResourceIT.java @@ -0,0 +1,9 @@ +package com.redhat.training.openshift.hello; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class NativeHelloResourceIT extends HelloResourceTest { + + // Execute the same tests but in native mode. +} \ No newline at end of file