I use Docker in production with Docker Compose for containers orchestration. Each service has its own Git repo with a compose file describing the orchestration. Swarm for distributed services and managing multiple servers.
Everything is a container and could be scaled, destroyed, restarted in a very simple way.
Machine creation is automated with Terraform and Ansible for provisioning, no matter the provider.