GlassFish 5.0 represents the reference implementation of Java EE 8. We can dockerize Java EE 8 applications by using a GlassFish base image, such as the official
Dockerfile of a zero-dependency Java EE 8 application looks like follows:
FROM oracle/glassfish:5.0 COPY target/application.war $GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/
A Docker container of that image starts the application server and auto-deploys our application.
application.war is packaged a thin WAR deployment artifact, what speeds up build, publishing and deployment times. The WAR file comprises only application-specific classes, no implementation-specific JAR files. If needed, any dependencies are added on top of the base image — before the actual application.
Imagine, we want to add the Prometheus Java API:
FROM oracle/glassfish:5.0 ENV GLASSFISH_LIB=$GLASSFISH_HOME/glassfish/domains/domain1/lib/ext/ # add Prometheus Java API COPY .../simpleclient-0.0.26.jar $GLASSFISH_LIB COPY .../simpleclient_common-0.0.26.jar $GLASSFISH_LIB COPY target/application.war $GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/
The application can already use Java EE 8 standards such as JSON-B. The provided dependency is
javax:javaee-api:8.0 — same as the Java EE 7 API with incremented version number.
To see a full example that uses Prometheus, please see Prometheus with Java EE. That example can also run on Java EE 8 and GlassFish 5 by updating the API version to 8.0 and the Docker base image to
Have fun developing Java EE 8 applications for Docker!
Found the post useful? Subscribe to my newsletter for more free content, tips and tricks on IT & Java:
Success! Now check your email to confirm your subscription.
|Published on Java Code Geeks with permission by Sebastian Daschner, partner at our JCG program. See the original article here: Dockerized Java EE 8 applications with GlassFish 5.0|
Opinions expressed by Java Code Geeks contributors are their own.