The microservice fleet now ships a Podman management script with systemd Quadlet integration, targeting rootless container deployment on Linux production hosts. The shape addresses the operational gap that hits enterprises running Docker today : the rootful daemon is a security and audit liability, but the alternatives (rootless Docker, Kubernetes) introduce their own complexity. Podman + Quadlet split the difference — rootless by default, supervised by systemd, no separate daemon.
Why Podman + Quadlet over Docker
- No privileged daemon. Containers run as the invoking user. Process trees, file ownership and audit logs all attribute correctly without the rootful Docker daemon's
dockergroup escalation pattern. - Native systemd integration. Quadlet renders
.containerdeclarations into systemd.serviceunits at boot. The container restarts on failure and on host boot through standard systemd machinery — no separate orchestrator, no PID-1 inside the container. - Drop-in compatibility. The Podman CLI mirrors the Docker CLI ; existing operator muscle memory ports without retraining.
What ships in this release
- The management script. A single entry point that installs, upgrades, starts, stops and tears down the microservice fleet. Idempotent : safe to re-run after a failed step.
- The Quadlet
.containertemplates. One per microservice, declaring the image, the mounts, the network and the systemd dependencies. The script copies them into/etc/containers/systemd/at install time ;systemctl daemon-reloadmaterialises them as units. - Persistent
service.env. Generated on first install with the operator's choices — credentials, ports, JVM memory limits. Never overwritten on subsequent upgrades. Carries runtime configuration outside the container image so a new image version inherits the existing tuning.
Operational surface
- Host-side JVM diagnostics work transparently.
jpslists the JVM inside the container as if it were a host-side process ;jcmd <pid> Thread.printattaches and dumps. No configuration, nodocker exec, no/jdkmounts — Podman's rootless namespace mapping makes the in-container JVM visible to host-side tooling that runs as the same user. - Standard systemd commands.
systemctl status,journalctl -u,systemctl restartall work without an additional CLI. Container lifecycle is just another systemd unit. - Upgrade is image swap. A new image version is rolled in by updating the
.containerfile and restarting the unit.service.envsurvives ; the container takes the new bits.