What it is
Docker is a platform for packaging software into containers. A container holds an application together with everything it needs to run, so it behaves the same on a laptop as on a server. Docker, Inc. released it in 2013, building on Linux kernel features for isolation, and it quickly became the standard way to package server software.
Docker Compose describes a set of containers, such as an API, a database and a web server, in one file and runs them together. Images are versioned and repeatable, which turns upgrades and rollbacks into a matter of swapping images rather than reconfiguring a server by hand, and makes a fresh server quick to stand up.
How I use it
- Lend Pilot runs in Docker Compose on its own EC2 instance: the Node and Express API, PostgreSQL and the web app.
- The containers sit behind nginx, with Let's Encrypt TLS on the origin.
- The whole product starts, stops and upgrades as one unit.
- Deploys sync, rebuild, migrate and run a smoke suite against production.
Docker is the right tool when a product has several moving parts that must be deployed together on one server. I use Docker Compose for Lend Pilot so the API, database and web app always ship as one unit, and a deploy stays boring.
Questions
Do you need Kubernetes to run a SaaS?
Not at Lend Pilot's size. Docker Compose on one EC2 instance runs the whole product as one unit, which is simpler to operate and cheaper.
How do you deploy a containerized app?
Lend Pilot's deploy script syncs the code, rebuilds the containers, runs migrations and then a smoke suite against production.