Deploying Clojure and ClojureScript applications in a Docker container
In this final section, we'll cover deploying our client and server application code in a single Docker container. Containers are a technology that you can use to wrap up a piece of software in a complete filesystem that includes everything it needs to run: application code, a runtime, system tools, system libraries, and so on—anything you might otherwise install on a server. Using container technology provides a way of guaranteeing that your application will always run the same regardless of the underlying environment it is running in.
Today, many cloud infrastructure providers offer products and services that have direct support for Docker. For instance, if you're using Amazon Web Service's Elastic Beanstalk to host, deploy, and scale your application, you can deploy a container directly by telling the Elastic Beanstalk API to deploy a specific container ID from a given Docker registry and it'll know what to do.