Skip to content

Чек-лист запуска

Используйте этот чек-лист для отслеживания прогресса при выводе нового сервиса от нуля до продакшена. Каждый пункт ссылается на соответствующую документацию, где это применимо.


Репозиторий и структура проекта

  • [ ] 1. Создайте репозиторий в GitLab. Используйте соглашение об именовании my-tool.

  • [ ] 2. Настройте структуру проекта в соответствии со стандартным расположением файлов для вашего стека.

    Структура для фронтенда
    my-tool/
    ├── src/
    ├── public/
    ├── index.html
    ├── package.json
    ├── nginx.conf
    ├── Dockerfile
    ├── .gitlab-ci.yml
    └── deploy/
        ├── my-tool.nomad.hcl
        ├── dev.vars.hcl
        ├── stage.vars.hcl
        └── prod.vars.hcl
    Структура для full-stack
    my-tool/
    ├── frontend/
    │   ├── src/
    │   ├── nginx.conf
    │   └── package.json
    ├── backend/
    │   ├── src/
    │   ├── migrations/
    │   └── package.json
    ├── Dockerfile
    ├── .gitlab-ci.yml
    └── deploy/
        ├── my-tool.nomad.hcl
        ├── dev.vars.hcl
        ├── stage.vars.hcl
        └── prod.vars.hcl
  • [ ] 3. Инициализируйте приложение — установите зависимости, создайте точку входа и убедитесь, что приложение запускается локально.

Артефакты деплоя

Полные примеры каждого файла смотрите на странице Файлы деплоя.

  • [ ] 4. Создайте Dockerfile — multi-stage сборка с правильными базовыми образами.

    • Фронтенд: node:20-alpine (сборка) → nginx:1.27-alpine (раздача)
    • Бэкенд: node:22-alpine (зависимости) → node:22-alpine + tini (продакшен)
  • [ ] 5. Создайте nginx.conf (если есть фронтенд) — SPA fallback, gzip, кэш /assets/ на 1 год, /index.html без кэша, /health возвращает 200.

  • [ ] 6. Создайте .gitlab-ci.yml — подключите шаблоны из meduza/infra, расширьте .docker_build и .nomad_deploy.

  • [ ] 7. Создайте Nomad job-файл (deploy/my-tool.nomad.hcl) — определите группы, теги Traefik, health-проверки, Consul template (если есть бэкенд).

  • [ ] 8. Создайте Nomad vars-файлы — по одному на каждое окружение:

    • deploy/dev.vars.hcl
    • deploy/stage.vars.hcl
    • deploy/prod.vars.hcl

Конфигурация бэкенда (если применимо)

  • [ ] 9. Добавьте записи в Consul KV для бэкенда в каждом окружении. Как минимум:

    • my-tool/config/PORT
    • my-tool/config/DATABASE_URL
    • my-tool/config/NODE_ENV
    • my-tool/config/LOG_LEVEL
  • [ ] 10. Выполните миграции базы данных, если бэкенд использует БД.

  • [ ] 11. Проверьте, что эндпоинт /health возвращает 200 OK при запуске бэкенда.

Dev-окружение

  • [ ] 12. Запушьте в ветку dev и убедитесь, что GitLab CI отработал успешно.

  • [ ] 13. Проверьте, что Docker-образ запушен в registry.

  • [ ] 14. Проверьте, что Nomad job задеплоен — откройте Nomad UI или выполните:

    bash
    nomad job status my-tool
  • [ ] 15. Проверьте доступность сервиса по адресу https://my-tool.dev.meduza.io.

  • [ ] 16. Проверьте, что health-проверки проходят в Consul UI или через:

    bash
    consul catalog services | grep my-tool

Stage-окружение

  • [ ] 17. Смержите в ветку stage и убедитесь, что CI задеплоил сервис.

  • [ ] 18. Проверьте доступность сервиса по адресу https://my-tool.stage.meduza.io.

  • [ ] 19. Проведите базовое smoke-тестирование — пройдите основные пользовательские сценарии и проверьте API-эндпоинты.

Продакшен

  • [ ] 20. Смержите в main и запустите ручной deploy job в GitLab CI.

  • [ ] 21. Проверьте доступность сервиса по адресу https://my-tool.meduza.io.

  • [ ] 22. Проверьте TLS — убедитесь, что сертификат валиден и выдан Let's Encrypt:

    bash
    curl -vI https://my-tool.meduza.io 2>&1 | grep "subject:"
  • [ ] 23. Проверьте health-проверки в Consul.

  • [ ] 24. Проверьте маршрутизацию Traefik — убедитесь, что фронтенд и бэкенд (если применимо) отвечают по правильным путям.

  • [ ] 25. Мониторьте логи первые несколько минут после деплоя:

    bash
    nomad alloc logs -f <alloc-id>

После запуска

  • [ ] 26. Добавьте сервис во внутренний каталог инструментов / лендинг, если применимо.

  • [ ] 27. Оповестите команду о том, что новый сервис запущен.


WARNING

Не пропускайте stage-окружение. Проблемы, обнаруженные на stage, обходятся значительно дешевле, чем проблемы в продакшене.

Документация по инфраструктуре