Запуск приложения
apps запускает всё, что не статический сайт: веб-сервисы, API, воркеры, Telegram-ботов, cron-задачи и
базы данных — контейнерами на нодах инстанса.
apps нужна хотя бы одна нода. Если xvii apps nodes ничего не показывает, обратитесь к администратору
или добавьте ноду сами: Ноды.
Создайте проект
Приложения, базы данных и секреты принадлежат проекту в команде. У проекта сразу два окружения,
production и preview.
xvii projects create shop --team acme
xvii projects list
Создайте приложение
xvii apps create api --project shop --port 3000 --health /healthz
--port — порт, который приложение слушает внутри контейнера; --health — путь, отвечающий 200, когда
приложение готово. Приложение в production отвечает на https://api.apps.xvii.network; другие окружения
получают https://api-<env>.apps.xvii.network, а если имя занято, к нему добавляется slug проекта.
Веб-приложения также получают переменную PORT.
Задеплойте код
Из репозитория:
xvii apps deploy api --project shop --dir .
Папка (файлы, которые git не игнорирует) загружается и собирается на ноде: по вашему Dockerfile,
если он есть, иначе Railpack сам определяет язык и собирает образ. CLI показывает вывод сборки, ждёт, пока
релиз станет живым, и печатает адрес приложения.
Релиз становится живым только после успешной проверки здоровья. Если она не прошла, приложение продолжает
работать на последнем живом релизе, а CLI завершается с ошибкой и логом сборки или проверки.
Уже есть образ?
xvii apps deploy api --project shop --image ghcr.io/acme/api:1.3
Добавьте базу данных
В панели apps откройте окружение проекта и добавьте базу PostgreSQL (есть ещё MariaDB, Valkey, Redis и
MongoDB). apps запишет её строку подключения в переменные окружения как DATABASE_URL, и приложение
подхватит её при следующем деплое. Пароль генерируется и запечатывается; копировать его в код не нужно.
См. Базы данных.
Секреты
xvii env set --project shop --env production STRIPE_KEY=sk_live_…
xvii env set --project shop --env production LOG_LEVEL=info --plain
Переменные из env попадают в приложение при следующем деплое. Значения секретны, если не указан --plain.
Логи, откаты, превью
xvii apps logs api -f # следить за логом
xvii apps rollback api # снова задеплоить предыдущий релиз
xvii apps deploy api --dir . --preview mr-12 --ttl 7d # временное превью
Шаблоны
xvii apps templates
xvii apps install n8n --project ops
Шаблон ставит приложение вместе с его базами данных за один шаг (n8n, Gitea, Grafana, Nextcloud, Directus,
Umami и ещё около пятидесяти).
Дальше