Hoist React apps can be deployed via Docker containers running Tomcat (for Hoist's Grails based back-end) and nginx (to serve compiled client JS/CSS and other assets).
This repo contains a minimal Dockerfile to build the base Tomcat container, which can be used by app-specific Docker deployments with additional configurations.
Images are published to Docker Hub as xhio/xh-tomcat, producing the
variants below.
| Variant | Tomcat | JDK | Source base image | Docker tag(s) |
|---|---|---|---|---|
| next-tc10-jdk17 | 10.1 | 17 | tomcat:10.1-jdk17 |
next-tc10-jdk17 |
| next-tc10-jdk21 | 10.1 | 21 | tomcat:10.1-jdk21 |
next-tc10-jdk21 |
| next-tc10-jdk25 | 10.1 | 25 | tomcat:10.1-jdk25 |
next-tc10-jdk25 |
| release-tc10-jdk17 | 10.1.55 | 17 | tomcat:10.1.55-jdk17 |
latest-tc10-jdk17, 4.1.0-tc10-jdk17 |
| release-tc10-jdk21 | 10.1.55 | 21 | tomcat:10.1.55-jdk21 |
latest-tc10-jdk21, 4.1.0-tc10-jdk21 |
| release-tc10-jdk25 | 10.1.55 | 25 | tomcat:10.1.55-jdk25 |
latest-tc10-jdk25, 4.1.0-tc10-jdk25 |
next-* tags are fully mutable. Every variant is rebuilt on every commit to develop and on a weekly schedule
(Wednesday ~20:00 ET) so they pick up upstream patches to the floating Tomcat base images. They are intended for
testing and snapshot-style deployments.
release-* builds publish two tags per (Tomcat line, JDK) pair: an immutable tag pinned to a specific xh-tomcat
semver release (recorded in CHANGELOG.md) and a mutable tag that floats to the most recent release of that pair.
This repo uses a single develop branch (and a master branch tracking the most recent release).
GitHub Actions workflows live in .github/workflows/:
buildNext.yml— runs on every push todevelop, on a weekly schedule, and on manual dispatch. Builds and pushes allnext-*variants in parallel via a matrix.buildRelease.yml— manual dispatch frommasteronly. Takes a semver release version as input. The locked Tomcat patch version is pinned in the workflow's build matrix (with theDockerfileTOMCAT_VERSIONARG default kept in sync for local builds). Builds and pushes therelease-*variants with both tags, then creates the corresponding git tag and GitHub release. To release with a newer Tomcat patch, bump the matrix entry (and the Dockerfile default) and updateCHANGELOG.mdin a normal PR before dispatching the workflow.
📫☎️🌎 info@xh.io | https://xh.io/contact
Copyright © 2026 Extremely Heavy Industries Inc.