In production, requests from the world will typically not hit the container (e.g. Tomcat) directly, but rather an Apache httpd server that forwards them to a Tomcat instance. The original hostname in the request is than typically preserved in a header (X-Forwarded-For) which is picked up by the HST to match the proper host in the hst:hosts configuration.
https://documentation.bloomreach.com/library/deployment/configuring/configure-apache-httpd-as-reverse-proxy-for-hippo.html explains how to setup httpd correctly, including all the “ProxyPass” rules to convert URLs.
It’s hard to say what goes wrong in your situation. Maybe the deployment of the site as ROOT.war goes wrong? But then still it’s weird that it does work initially.
Do note that deploying as ROOT.war is not supported anymore in version 13 (see the message as the bottom of https://documentation.bloomreach.com/library/deployment/system-architecture.html)