Для того чтобы развернуть всю инфраструктуру и приложения «в один клик», используется главный скрипт-дирижер start.sh. Он берет на себя проверку Docker, настройку сети и последовательный деплой всех компонентов.
Откройте терминал (Git Bash на Windows или Bash на Linux) в корне проекта и выполните:
Для разработки (Development):
sh scripts/start.sh devДля продакшена (Production):
sh scripts/start.sh prod№# Алгоритм работы (Pipeline деплоя)
При запуске start.sh система последовательно проходит 4 этапа автоматизации. Каждый последующий шаг зависит от успешного завершения предыдущего.
На этом этапе подготавливается фундамент хост-системы:
- Инсталляция: Проверка наличия бинарного файла
docker. Если он отсутствует, скрипт устанавливает Docker Engine и Docker Compose Plugin. - Режим Swarm: Проверка состояния ноды. Если Swarm не активен, выполняется инициализация (
docker swarm init). - Сетевой слой: Создание внешних (external) оверлейных сетей:
proxy— для связи Caddy с внешним миром.monitoring— для сбора метрик и логов.app_dev_net/app_prod_net— изолированные сети для приложений.
Запуск сервисов хранения данных и очередей:
- Конфигурация: Загрузка переменных окружения из выбранного файла (
.env.devили.env.prod). - Запуск хранилищ: Подъем стэков базы данных (Postgres), кэша (Redis) и объектного хранилища (MinIO).
- Стабилизация: Пауза в 5 секунд. Это необходимо, чтобы БД успели проинициализировать файловую структуру и начать принимать TCP-соединения до того, как к ним постучатся приложения.
Настройка входной точки трафика:
- Caddy: Развертывание прокси-сервера.
- SSL/TLS: Caddy автоматически запрашивает сертификаты (Let's Encrypt / ZeroSSL) для доменов, указанных в конфигурации.
- Маршрутизация: Открытие портов
80и443. Теперь домены (включая CDN и API) начинают резолвиться и проксироваться внутрь Swarm.
Финальный этап — запуск бизнес-логики:
- Apps: Развертывание сервисов из директории
apps. - Связанность: Приложения подключаются к уже запущенным и прогретым базам данных и Redis, используя имена сервисов в качестве хостов (например,
database_prod_postgres).
- Пользователь → запрос на
myapp.com - Caddy → принимает запрос (SSL терминация)
- Caddy → перенаправляет в сеть
app_net - App → обрабатывает запрос, обращаясь к Postgres / Redis
- MinIO → отдает статику через поддомен
cdn.
После завершения работы скрипта используйте команду для просмотра статуса всех сервисов:
docker stack lsДля просмотра конкретных контейнеров в стеке:
docker stack ps database_prodДля того чтобы автоматизация отработала корректно, перед запуском start.sh необходимо выполнить три подготовительных шага.
Файлы переменных окружения являются «мозгом» вашего деплоя. Они должны находиться строго в корневой директории проекта.
- .env.dev — параметры для локальной разработки или тестового сервера.
- .env.prod — боевые параметры (сложные пароли, реальные домены).
Важно: Скрипт
start.shищет файлы именно с такими именами. Если файлов не будет, деплой завершится ошибкой, так как Docker не сможет подставить пароли и пути к базам данных.
В системах на базе Linux (и внутри WSL) файлы скриптов по умолчанию могут быть защищены от исполнения. Чтобы система могла их запустить, необходимо выдать им соответствующие права.
Выполните команду в корне проекта:
chmod +x scripts/*.sh setups/*.shИнструкции по участию в проекте находятся в файле CONTRIBUTING.md.
Распространяется под лицензией MIT. Подробности в файле LICENSE.