Build a Docker image, push the docker image to a registry, deploy the Docker image wherever you want to deploy it using docker pull.
I'm using Google Cloud instances running CoreOS which has Docker support built into the OS (don't know if AWS / Azure supports CoreOS, but is easy to install on Debian if they don't have CoreOS).
If you develop against that same Docker image, your production setup will be exactly the same as your dev setup which means no surprises later on when stuff works locally but not in production.