Чек-лист запуска
Используйте этот чек-лист для отслеживания прогресса при выводе нового сервиса от нуля до продакшена. Каждый пункт ссылается на соответствующую документацию, где это применимо.
Репозиторий и структура проекта
[ ] 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.hcldeploy/stage.vars.hcldeploy/prod.vars.hcl
Конфигурация бэкенда (если применимо)
[ ] 9. Добавьте записи в Consul KV для бэкенда в каждом окружении. Как минимум:
my-tool/config/PORTmy-tool/config/DATABASE_URLmy-tool/config/NODE_ENVmy-tool/config/LOG_LEVEL
[ ] 10. Выполните миграции базы данных, если бэкенд использует БД.
[ ] 11. Проверьте, что эндпоинт
/healthвозвращает200 OKпри запуске бэкенда.
Dev-окружение
[ ] 12. Запушьте в ветку
devи убедитесь, что GitLab CI отработал успешно.[ ] 13. Проверьте, что Docker-образ запушен в registry.
[ ] 14. Проверьте, что Nomad job задеплоен — откройте Nomad UI или выполните:
bashnomad job status my-tool[ ] 15. Проверьте доступность сервиса по адресу
https://my-tool.dev.meduza.io.[ ] 16. Проверьте, что health-проверки проходят в Consul UI или через:
bashconsul 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:
bashcurl -vI https://my-tool.meduza.io 2>&1 | grep "subject:"[ ] 23. Проверьте health-проверки в Consul.
[ ] 24. Проверьте маршрутизацию Traefik — убедитесь, что фронтенд и бэкенд (если применимо) отвечают по правильным путям.
[ ] 25. Мониторьте логи первые несколько минут после деплоя:
bashnomad alloc logs -f <alloc-id>
После запуска
[ ] 26. Добавьте сервис во внутренний каталог инструментов / лендинг, если применимо.
[ ] 27. Оповестите команду о том, что новый сервис запущен.
WARNING
Не пропускайте stage-окружение. Проблемы, обнаруженные на stage, обходятся значительно дешевле, чем проблемы в продакшене.