Run multiple services behind Caddy with proper routing.
Caddy can route traffic to multiple services based on domain or path.
Caddy can route traffic to multiple backend services based on domain name or path. This allows you to host multiple applications on a single server.
```yaml services:
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
networks:
- app-network
whoami:
image: traefik/whoami:latest
container_name: whoami
restart: unless-stopped
networks:
- app-network
nginx:
image: nginx:alpine
container_name: nginx
restart: unless-stopped
networks:
- app-network
networks:
app-network:
volumes:
caddy_data: caddy_config:
```
``` your-domain.com {
reverse_proxy whoami:80
}
api.your-domain.com {
reverse_proxy nginx:80
} ```
All services on the same network can reach each other by service name. Caddy can reach `whoami:80` and `nginx:80` because they share the `app-network`.
To add a new service:
1. Add service to docker-compose.yml 2. Add entry to Caddyfile 3. Restart services