Как выкатить приложение из Git на сервер клиента
DNS заранее, подключение сервера одноразовым ключом, описание приложения из репозитория или каталога, выкат по коммиту и откат после неудачной проверки здоровья.
Выкат живёт в Проект → Развёртывание. Пять шагов, и первый нужно сделать до всего остального.
Шаг 1. Заведите запись DNS заранее
A-запись домена приложения на адрес сервера — до установки.
Причина жёсткая: сертификат выпускает Let's Encrypt, и он проверяет, что домен принадлежит вам, обращаясь по этому имени к вашему серверу. Если запись ещё не разошлась, проверка не пройдёт и сайт откроется без защищённого соединения.
nslookup app.вашдомен.ru
В ответе должен быть адрес сервера. Нет — подождите и повторите; обновление занимает от нескольких минут до часа.
Шаг 2. Подключите сервер
«Новый сервер» → «Команда установки». Ключ в команде одноразовый и живёт 60 минут, закрытая часть пары остаётся на сервере.
Подробно про то, что при этом происходит и почему платформе не нужны ваши SSH-ключи, — в отдельном руководстве: Подключить сервер без входящих портов.
Шаг 3. Опишите приложение
Три пути, в порядке частоты:
- Из репозитория — Dockerfile, Docker Compose или статика;
- Из каталога — готовые приложения;
- Из образа — если сборка у вас уже своя.
Укажите домен и адрес проверки здоровья. Пароли к базе и ключи шифрования генерируются автоматически: придумывать их не нужно, и это намеренно — сгенерированные надёжнее придуманных и не повторяются между установками.
Шаг 4. Выкатывайте
Вручную или автоматически при коммите в ветку — по вебхуку.
Порядок такой: собрался образ → поднялся релиз → прошла проверка здоровья → трафик переключился. Не прошла — трафик остаётся на прежнем релизе, а новый откатывается сам.
Именно поэтому выкат можно делать в пятницу: откат не требует человека ночью.
Шаг 5. Если на сервере уже что-то работает
«Перехват работающего стека». Платформа читает описание того, что запущено, и показывает план: что переносится под управление, что остаётся как есть.
Исходный стек при этом не трогается до вашего подтверждения — план сначала показывается, потом применяется.
Что стоит проверить после первого выката
Одна команда, десять секунд, экономит час:
curl -sI https://app.вашдомен.ru | head -3
Смотрите на код ответа и на Location, если он есть. Почему именно на
Location — Редирект вёл на 0.0.0.0:3000.
Рядом с этим
- Метрики того же сервера — Мониторинг серверов.
- Полное описание раздела — Деплой из Git.
Читайте также
Автор
Александр ЦапковОснователь Скоупворк
Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.