Stack · Tooling

Docker — reproducible builds & environments

EcosystemDocker

Docker is how I keep an environment the same in three places that otherwise drift: my machine, CI, and the server it eventually runs on.

Why I use it

"Works on my machine" is nearly always a version difference nobody wrote down. A Dockerfile writes it down. The practical wins are multi-stage builds — build dependencies stay out of the final image, which drops it from hundreds of megabytes to tens — and Compose, which means a new contributor gets Postgres running with one command instead of a page of setup instructions.

What I've built with it

  • Multi-stage Dockerfiles for Node services, so the shipped image carries the runtime and nothing that built it
  • Compose files spinning up Postgres, Redis and the app together for local development
  • The same image built in CI and deployed, so what passed the tests is what runs
  • Pinned base images and non-root users, because latest is not a version and root is not a requirement

Alongside

Node.jsCI/CDComposePostgresDevOps

Rest of the stack

Got a project that needs Docker?

Get in touch →