Веб-сервер Caddy крайне популярен не только в виде веб-сервера, но и обратного прокси, благодаря крайне простой настройке, автоматической конфигурации TLS, включая прозрачную интеграцию с Let’s Encrypt.
Также Caddy популярен как обратный прокси для Docker, который обычно принято настраивать «классически», например:
grafana.example.com {
reverse_proxy grafana:3000
}
nextcloud.example.com {
reverse_proxy nextcloud:8080
}Но Docker – это в первую очередь динамические среды, контейнеры могут создаваться, удаляться, меняться, особенно в тестовых средах и каждый раз править руками конфигурацию обратного прокси – занятие утомительное.
Поэтому был разработан специальный плагин Caddy-Docker-Proxy, который позволяет Caddy работать с метками Docker, автоматически подхватывая конфигурацию, как Traefik.
Для этого просто используйте готовый контейнер от разработчика плагина, для этого создайте следующий
docker-compose.yamlservices:
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
ports:
- 80:80
- 443:443/tcp
- 443:443/udp
environment:
- CADDY_INGRESS_NETWORKS=caddy
networks:
- caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
restart: unless-stopped
networks:
caddy:
external: true
volumes:
caddy_data: {}
Затем в compose нужного сервиса добавьте:
services:
my_app:
image: my_app:latest
networks:
- caddy
labels:
caddy: my_app.example.com
caddy.reverse_proxy: "{{upstreams 80}}"
networks:
caddy:
external: true
Теперь при запуске контейнера my_app в конфигурацию Caddy будет добавлена секция для обратного проксирования вашего сервиса.
