The Build Cache Was Not Broken
Docker cache problems are often Dockerfile problems: unstable inputs, bad COPY order, and layers that depend on too much.
Containers, networking, deployment pipelines, and the useful parts of Docker. Less theory, more “here is what actually works in production.”
Docker cache problems are often Dockerfile problems: unstable inputs, bad COPY order, and layers that depend on too much.
The pitch is obvious: per-PR environments, live links, faster feedback. Then a multi-service stack needs twenty restarts and the pitch meets operations.
SSL certificates should be boring. Zero is a small Go binary that handles ACME challenges, renews certificates, writes them to a shared volume, and reloads Nginx.
FTL deploys Docker apps over SSH with one YAML file, no required registry, Nginx routing, SSL, health checks, and deployment hooks. It is for the space between rsync scripts and a full orchestrator.
Docker networking gets a lot easier once you separate internal ports from host port mappings. Containers talk by service name and internal port. The outside world uses the mapped port.
NextJS App Router does not require Vercel. A standalone build, one Node container, one Nginx container, and Docker Compose are enough for a boring self-hosted deployment.