adam bien's blog

Docklands: Java EE Docker Images In "Docker Central" 📎

Docklands comprises Java EE-relevant (Wildfly, Payara, TomEE, WebSphere Liberty, WLS, Tomcat (...)) Dockerfiles, directly available from hub.docker.com/u/airhacks/.

Docklands images are heavily relying on image layering.

A typical Java EE application comprises the following layers:

  1. airhacks/java: the OS + Java layer. Only serves as a base, "abstract" layer. Changes on OS and Java releases and patches.
  2. airhacks/[appserver]: this layer inherits from airhacks/java and only contains the application server installation. Only changes on new application server releases.
  3. airhacks/[appserver]-configured: inherits from 2. and contains project-specific configuration like e.g. JMS Queues, JDBC DataSources etc. Has to be rebuilt on projects-specific configuration changes like e.g. -Xmx or -Xms changes. This layer is optional
  4. airhacks/[project-name]: inherits from 2. or 3. Only contains a Thin War. Is rebuilt with each mvn package

Fortunately the base images are big, but have to rebuilt only a few times in year. The application / project images change several times a day, but are tiny. The creation of a full docker image with https://github.com/AdamBien/docklands takes usually: ~100ms and only adds the WAR size (usually a few MB) to the total size.

The base images exist only once at your hard drive and are shared across different application servers and applications (aka microservices).

Try it: docker run -d -p 8080:8080 --name payara-ping airhacks/payara-ping

Checkout docklands for the sources, or docklands at hub.docker.com for ready to use images.

Docklands in action:

See you at Java EE Workshops at Munich Airport, Terminal 2 and particularly at Java EE 7 Microservices. Is MUC too far? Checkout: javaeemicro.services.