Why Docker?
I use Docker for almost everything at KnausDev. Only a few applications run bare metal — specific requirements for clients where containerization isn’t an option. For everything else, Docker is the default. I’ve been using it since 2022, and since then it’s become the foundation of how I deploy, develop, and hand off projects like E-wire, Exlink, and Dadooo.ai.
Solving real team problems
Beyond my own workflow, I’ve had to introduce Docker to several development teams to solve the “works on my machine” problem and reduce onboarding overwhelm. When a new developer can run docker compose up and have the entire Laravel application stack running in minutes instead of spending a day configuring their local environment, the investment pays for itself immediately.
How I Use It
Docker shows up at every stage of my work at KnausDev, from local development through to production deployment on Hetzner dedicated machines.
Where Docker runs
- Production deployments: Docker Compose stacks that bundle the application, PostgreSQL, and monitoring in a single config deployed to Hetzner
- Local development: consistent environments across machines, matching production exactly
- Scaling: Docker Swarm for horizontal scaling when a single instance isn’t enough
- Tool accessibility: running databases, Mailcow, Gitea, and other services without polluting the host system
- Team onboarding: one config file, one command, entire stack running. No more environment setup documentation that’s outdated before it’s finished
- Client infrastructure: containerized deployments I hand off to client teams with confidence they’ll run the same way everywhere
- System migrations: running old and new systems side by side during incremental rewrites
Status
Active: default deployment and development method across all platform engineering projects.