I personally manage my services using ansible, I only set up the actual infrastructure, the virtual machines that run the services, with terraform/opentofu. Docker is one of those in the middle tech between infrastructure and software distribution and it makes more sense to me to treat a service as a role in ansible do I can deploy it (docker, podman package install or whatever), sort it's networking and handle it's configuration all in one place. I'm not saying the way you do it is wrong, but this is just a step down the automation rabbit hole.
It doesn't appear your setup provisions the actual hosts for docker so I guess you are provisioning manually for that layer? That is another area you might want to leverage opentofu for?
Also congrats on actually documenting it in a consumable way for others to learn from.