Caddy Reverse Proxy with Docker Compose and HTTPS (2026)
Run Caddy as a reverse proxy with Docker Compose: a two-line Caddyfile, automatic Let's Encrypt HTTPS, several sites on one server, zero-downtime reload, and fixes for common errors.
Run Caddy as a reverse proxy with Docker Compose: a two-line Caddyfile, automatic Let's Encrypt HTTPS, several sites on one server, zero-downtime reload, and fixes for common errors.
A guide and examples for converting complex docker run commands into clean docker-compose.yml files.
extra_hosts in Docker Compose: both syntaxes, what host-gateway resolves to and how to change it, how to check /etc/hosts, and the fix for connection refused on Linux.
How to add a healthcheck in Docker Compose, with copy-ready checks for Postgres, MySQL, Redis and HTTP apps, the default timings, and depends_on with condition: service_healthy.
How networks work in Docker Compose — the default network, service name DNS, custom and external networks, isolating a database, and why one container cannot reach another.
Docker Compose port syntax in full: host:container, IP binding, ranges, UDP, the long form, ports vs expose — and the two gotchas that silently expose a container or stop it starting.
How to restart Docker Compose services and set restart policies — restart vs up, the no/always/on-failure/unless-stopped options, and restarting one service.
Copy-paste ready Docker Compose templates for common stacks: Node+Postgres, Python+Redis, WordPress, and more.
Update Docker Compose containers to a new image: docker compose pull and up -d, one service at a time, --pull always, --force-recreate, rollback to the old image, and safe automatic updates.
How Docker Compose volumes work — named volumes vs bind mounts, syntax, persisting data, sharing data between services, and backups, with copy-paste examples.
Docker Compose vs Kubernetes compared on what they do, what they cost you in time, and when to switch — plus how Docker, Compose, Swarm and Kubernetes relate to each other.
Learn how to use 'docker compose watch' for hot-reloading and faster development cycles.
Use a locally built Docker image in Compose without pushing to a registry. build vs image, pull_policy: never, and fixing 'manifest not found' errors.
Understand the difference between Docker and Docker Compose, and when to use each.
Fix 'E: Unable to locate package docker-compose-plugin' in 5 commands. Copy-paste steps for Ubuntu 20.04/22.04/24.04 and Debian 11/12, plus the 3 error variants (no installation candidate, dpkg overwrite, docker-compose-v2).
A working docker-compose.yml for Grafana: persistent volume, admin password, a Prometheus data source provisioned from a file, plugins, and a Caddy HTTPS example.
Run HAProxy 3.4 with Docker Compose: a working haproxy.cfg, Let's Encrypt HTTPS with a Certbot container, several sites, reload without downtime, and fixes for 503 and certificate errors.
Install Docker Compose v5 on Ubuntu 22.04/24.04/26.04, Debian 12/13, any Linux and macOS. Copy-paste commands, how to check the version, and fixes for 'docker compose is not a docker command'.
A working docker-compose.yml for Komga, the open-source comics, manga, and eBook server — persistent volumes, port 25600, permissions, and a Caddy HTTPS example.
Set up Nginx as a reverse proxy with Docker Compose: proxy_pass to app containers, free Let's Encrypt HTTPS with the built-in ACME module (no Certbot), several sites, reload, and fixes for 502 and 'host not found in upstream'.
A copy-ready Docker Compose file for PostgreSQL 18: persistent volume, healthcheck, local-only port, connecting from an app, backups, and the PostgreSQL 18 volume path change.
Run your own private Docker registry with Docker Compose. registry:2 setup, HTTPS via Caddy, basic auth, listing images, and garbage collection.
How to ensure your Docker Compose services start automatically when your server reboots.
Self-host Supabase with Docker Compose: clone the repo, set JWT_SECRET, ANON_KEY and SERVICE_ROLE_KEY, start all 7 services, and reach Studio on port 3000 and the API gateway on port 8000.
Run Traefik v3 with Docker Compose: route containers with labels, get Let's Encrypt certificates automatically, redirect HTTP to HTTPS, and fix 404 and 'client version too old' errors.
A working docker-compose.yml for Trilium Notes — the persistent data volume, port 8080, a Caddy HTTPS example, and the reverse-proxy setting that stops Trilium from crashing on startup.