There are many reasons why you would want to use Docker but for me the biggest one is that the entire configuration, installation, and deployment is all self-contained in that docker-compose file. The rollover and load balancing features are also nice if you need to scale out but even on a single server there is a solid case to be made to use Docker. The alternative you've presented is that you'd need to install and configure Nginx, then install and configure LetsEncrypt, then install and configure Ghost. And then you'd need to make sure you documented all the steps you've performed so that you can do it again if needed in the future. The docker-compose file aligns to the "infrastructure as code" methodology and while there are many other tools that could achieve the same thing (Terraform, Ansible, Salt, etc) using docker-compose in this scenario seems to make sense.