Cost effective and robust options for deployment

I would start with Digiatl Ocean or Linode, and use Traefik as the load balancer for your docker deployments, thus allowing you to rotate containers with new versions of your code, while at same time it takes care of creating and renew LetsEncrypt certificates automatically for you.

At work I have wrote a Debian Traefik Setup guide to help our potential clients to run our demos in online servers, thus you can use it as a base to create a production ready stack:

I also wrote guide to run Traefik on AWS EC2:

You can see an example of the Traefik setup being used to deploy one of our demos for an Elixir backend in this repo:

IMPORTANT: Please bear in mind that this Elixir docker stack was created with the intention of deploying the 3 servers on the docker-compose.yml file online for testing proposes, and then bring them down once testing is completed, thus you may need to do some optimizations in the stack. One I can think off right now is to optimize the Dockerfile for multistage builds in order to reduce its size.