Shrink a Rails Docker image from 1 GB to under 150 MB in seven ordered steps: smaller base image, .dockerignore, multi-stage builds, layer ordering, distroless with its honest caveat, and digest pinning. Every step is measurable the same afternoon.
Upgrading PostgreSQL from 16 to 17 in Docker without losing data: run both versions side by side in docker-compose, back up with pg_dump, restore into the new container, then switch the app over. Five concrete steps plus the gotchas to watch out for.
Deploy a NextJS app with Docker and Bun using a three-stage Dockerfile: install dependencies with a frozen lockfile, build the app, then run the standalone output on oven/bun:alpine. Faster installs than npm and a small production image, step by step.
Locked out of SSH? Portainer can get you root back: deploy a privileged busybox container that mounts the host filesystem at /host and gives you an interactive shell. The exact Docker Compose script, the security implications, and when this trick is justified.
Thruster with Kamal in Rails: what 37signals' no-config proxy adds (HTTP/2, Let's Encrypt HTTPS, asset caching, X-Sendfile with compression), why it is still useful behind Traefik or Cloudflare, and how to integrate it into your app.
Docker's cached and delegated volume modes explained: how the three consistency options differ, when to relax host-container syncing for faster I/O, and a docker-compose Nginx example showing exactly where to put each flag.