Как развернуть веб-сервер Caddy с помощью Docker — CloudSavvy IT

Графика, показывающая логотип проекта веб-сервера Caddy.

Caddy — популярный современный веб-сервер, разработанный для обеспечения высокой производительности и безопасности памяти. Он написан на Go, работает без зависимостей, имеет встроенную поддержку рендеринга статического сайта с помощью Markdown и предлагает автоматический HTTPS.

Caddy сосредоточен на предоставлении простого интерфейса управления сервером, который по умолчанию предоставляет вам полезные функции. Его проще настраивать и обслуживать, чем конкурирующие системы, такие как Apache и NGINX. В этой статье мы покажем, как запустить собственный сервер с минимальной настройкой, используя Docker с официальным образом Caddy.

Выбор тега изображения

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Изображение Caddy представлено в нескольких вариантах. Последняя версия Caddy используется всеми, это версия 2.4 на момент написания. Вы можете использовать 2.4.x (заменив x на конкретную версию исправления), 2.4 или 2 для закрепления за основным, второстепенным компонентом или компонентом исправления.

Caddy работает с хостами Linux и Windows Docker. Alpine Linux, Windows Server Core 1809 и выпуск Windows Server Core 2016 LTSC являются текущими вариантами операционной системы. Ссылка на голый тег Caddy, такой как caddy:2, выберет подходящее изображение для вашей платформы; вы можете использовать такие варианты, как 2.4-alpine или 2.4.6-windowsservercore-1809, чтобы быть более явным.

Запуск базового сервера

Caddy поставляется в готовой к работе конфигурации. Образ Docker будет обслуживать ваш веб-контент из каталога /usr/share/caddy. Вы можете добавить свои файлы в контейнер, смонтировав каталог хоста по этому пути.

Caddy также имеет отдельные каталоги конфигурации и данных, в которые вы должны монтировать тома Docker. Каталог /config является необязательным, но рекомендуемым; он хранит ваши файлы конфигурации, но, поскольку они преобразуются в запросы API, их не обязательно сохранять. Расположение /data имеет жизненно важное значение, поскольку оно содержит созданные Caddy сертификаты TLS, закрытые ключи и окончательную конфигурацию сервера, обработанную API.

docker run -d -p 80:80 \ -v ./my-website:/usr/share/caddy/ \ -v caddy-config:/config -v caddy_data:/data caddy:2

Как HTTP-сервер, Caddy по умолчанию прослушивает порт 80. Это связано с портом 80 на вашем хосте с помощью флага -p в приведенном выше примере.

Теперь вы можете посетить http://localhost в своем браузере, чтобы получить доступ к своему сайту. Вы должны увидеть index.html из вашего смонтированного каталога содержимого. Вы получите целевую страницу Caddy по умолчанию, если ничего не привязывали к /usr/share/caddy.

Настройка HTTPS

Одной из главных особенностей Caddy является автоматическая поддержка TLS, поэтому было бы упущением не использовать ее. Вам необходимо привязать порт 443 в дополнение к порту 80, чтобы Caddy мог получать трафик HTTPS. Единственное другое изменение — указать доменное имя, на котором будет обслуживаться ваш сайт. Всем остальным занимается Кэдди.

docker run -d -p 80:80 -p 443:443 \ -v ./my-website:/usr/share/caddy/ \ -v caddy-config:/config -v caddy_data:/data caddy:2 файл caddy -server —домен example.com

Команда после того, как имя образа передается докером, запускается в точку входа образа Docker. В данном случае это означает, что caddy file-server… выполняется как процесс переднего плана контейнера. Флаг —domain используется для установки домена, для которого Caddy получит сертификат HTTPS. Вы должны убедиться, что у вас есть DNS-запись типа A, ссылающаяся на IP-адрес вашего хоста Docker, прежде чем запускать контейнер.

Добавление собственного Caddyfile

Caddy обычно использует конфигурационный файл Caddyfile для определения маршрутов и изменения настроек сервера. Образ Docker загружает Caddyfile в /etc/caddy/Caddyfile. Смонтируйте свой собственный файл по этому пути, чтобы переопределить настройки по умолчанию, которые обслуживают /usr/share/caddy:

docker run -d -p 80:80 -p 443:443 \ -v ./Caddyfile:/etc/caddy/Caddyfile -v caddy_data:/data caddy:2

Вот простой Caddyfile для сайта example.com с включенным HTTPS:

{ электронная почта example@example.com } example.com { ответить «Это работает!» }

Эта минимальная конфигурация задает глобальный адрес электронной почты example@example.com. Этот адрес электронной почты будет использоваться при отправке запросов на сертификат Let’s Encrypt. Блок example.com предоставляет правила маршрутизации для обработки Caddy запросов к вашему домену. В этом случае сервер всегда будет отвечать статическим сообщением.

Более подробная информация о Caddyfile доступна в документации Caddy. Docker здесь ничего не меняет: пока ваш файл доступен в /etc/caddy/Caddyfile, Caddy загрузит и использует его.

Создание образов Docker для ваших сайтов

До сих пор мы рассматривали специальное использование Caddy, запуская контейнеры прямо из базового образа Caddy. На практике более вероятно, что вы захотите создать выделенные образы для своих сайтов, чтобы вам не приходилось монтировать содержимое каждый раз при запуске контейнера.

Базовый образ Caddy готов к расширению вашими собственными инструкциями по добавлению контента и конфигурации. Вот пример Dockerfile, который включает Caddyfile и копирует содержимое вашего сайта в настроенный каталог:

ИЗ Caddy: 2.4 WORKDIR /my-site КОПИРОВАТЬ Caddyfile /etc/caddy/Caddyfile КОПИРОВАТЬ *.html ./ КОПИРОВАТЬ *.css css/ КОПИРОВАТЬ *.js js/

Теперь вы можете собрать и запустить свой образ, чтобы запустить сервер Caddy, предварительно настроенный для вашего сайта:

docker build -t мой-сайт:последний . docker run -p 80:80 -p 443:443 -v caddy_data:/data мой-сайт:последние

На многих сайтах вы захотите включить дополнительные модули Caddy для дополнительной функциональности. Лучший способ справиться с этим в вашем Dockerfile — использовать специальный образ сборки Caddy. Это включает в себя инструменты, необходимые для сборки пользовательского экземпляра Caddy с установленными указанными модулями.

Многоэтапные сборки Docker идеально подходят для этого рабочего процесса. Вот пример, который добавляет модуль Caddy replace-response, чтобы вы могли переписывать части данных ответа, используя правила в Caddyfile:

ИЗ caddy:2.4-builder КАК caddy-build ЗАПУСК xcaddy build —with github.com/caddyserver/replace-response ИЗ caddy:2.4 КОПИРОВАТЬ —from=caddy-build /usr/bin/caddy /usr/bin/caddy WORKDIR /my-site КОПИРОВАТЬ Caddyfile /etc/caddy/Caddyfile КОПИРОВАТЬ *.html ./ КОПИРОВАТЬ *.css css/ КОПИРОВАТЬ *.js js/

На первом этапе сборки создается двоичный файл Caddy со встроенным модулем ответа на замену. Команда xcaddy, доступная в образе компоновщика, помещает свой вывод в /usr/bin/caddy. Второй этап использует стандартный базовый образ Caddy, но перезаписывает включенный двоичный файл созданным пользователем образом. Затем ваш контент накладывается как обычно; В результате сервер Caddy включает дополнительные модули, сохраняя при этом полную поддержку остальных функций базового образа Docker.

Резюме

Caddy — это современный веб-сервер, который отлично подходит для эффективного обслуживания статических файлов. Он предлагает привлекательный набор функций с первоклассной поддержкой HTTPS, встроенным рендерингом шаблонов и интеграцией Markdown.

Использование Docker для размещения вашего сервера Caddy дает вам быстрый способ развернуть экземпляр без ручной загрузки двоичных файлов или установки служебных файлов. Это хороший способ попробовать Caddy или запустить его вместе с существующими рабочими нагрузками в настройках кластера.

Поскольку Caddy может выступать в качестве обратного прокси-сервера и балансировщика нагрузки, вы можете использовать его в качестве точки входа для маршрутизации трафика в другие ваши контейнеры Docker. Популярный модуль Caddy Docker Proxy расширяет встроенные возможности сервера благодаря поддержке Traefik для автоматического обнаружения маршрутов с помощью меток контейнеров Docker.

Caddy использует подход API-first к настройке, который упрощает управление экземплярами, работающими внутри контейнера. Вам не нужно слишком беспокоиться о внедрении файлов конфигурации или управлении томами. Пока каталог /data сохраняется, вы можете делать запросы к API для изменения работы Caddy без использования интерфейса командной строки Docker. Это может сделать его лучшим выбором для контейнеризации по сравнению с более традиционными вариантами, такими как Apache и NGINX.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.