Как развернуть приложение Cursor с PostgreSQL
Чтобы развернуть приложение Cursor с PostgreSQL, запустите приложение на хосте, создайте базу данных, подключите её через серверный DATABASE_URL и примените миграции схемы. Агент Cursor может сделать это через Lizard CLI. После развертывания проверьте публичный URL и убедитесь, что запись сохраняется после новой сессии в браузере и повторного развертывания.
Это руководство для приложения Next.js, которое вы уже запускаете локально. Оно использует Lizard для приложения и Managed Postgres для базы данных. Вы можете использовать промпты в десктопном агенте Cursor, изучить его план и позволить ему выполнить утвержденные вами шаги.
Что нужно перенести с ноутбука?
Рассмотрим приложение задач: вы добавляете задачу, отмечаете её выполненной и возвращаетесь позже. Публикация страницы — лишь часть развертывания. Сервер должен иметь доступ к базе данных, таблицы должны существовать, и новые запросы должны читать сохраненные данные.
| Часть вашего приложения | Что нужно в продакшене |
|---|---|
| Страницы Next.js и серверный код | Продакшн-сборка и запущенный Node.js-сервис |
| Задачи, пользователи и другие сохраненные записи | PostgreSQL, к которому у развернутого сервера есть доступ |
| Учетные данные базы данных и API-ключи | Серверные переменные окружения |
| Изменения схемы | Шаг миграции для продакшн-базы данных |
| Ссылку для обмена | Публичный HTTPS-адрес |
Ваша локальная база данных и файл .env.local не перемещаются вместе с отправкой в GitHub. Решите, какие данные нужно сохранить. Новая база данных подходит для нового приложения; перенос существующей базы требует отдельного плана экспорта и импорта.
1. Проверьте продакшн-сборку в Cursor
Откройте папку приложения в Cursor. Попросите агента изучить проект перед изменением настроек развертывания:
Prepare this Next.js app for deployment with PostgreSQL. Read its package.json,
lockfile, Next.js configuration, database client, and migration files.
Run the existing checks and production build using this project's package
manager. Identify the start command, port, required environment-variable
names, and production migration command. Do not print secret values.
Check whether any page queries the database during the build. Explain what
must be available at build time and what the app can read at request time.
Show any fixes needed before deploying.Сервер разработки может работать, пока продакшн-сборка падает. Для стандартного развертывания Next.js на Node.js сборка использует next build, а сервер — next start. Статический экспорт и standalone-вывод требуют других настроек запуска. Следуйте руководству по развертыванию Next.js для конфигурации, которую использует ваше приложение.
Держите lockfile в системе контроля версий. Держите учетные данные базы данных вне его. Переменная вроде NEXT_PUBLIC_DATABASE_URL раскроет секрет в браузере: Next.js включает значения NEXT_PUBLIC_* в клиентский JavaScript во время сборки. Используйте серверный DATABASE_URL. Документация Next.js по переменным окружения объясняет разницу.
2. Передайте Cursor актуальные инструкции по развертыванию
Агент Cursor может выполнять терминальные команды. Установите Lizard CLI в терминале Cursor, если он ещё недоступен:
npm install -g @lizard-build/cliЗатем попросите агента выполнить и прочитать:
lizard skills get core --jsonКоманда вернет руководство, соответствующее установленному CLI. Этот рабочий процесс использует CLI напрямую; вам не нужно настраивать MCP-сервер. Если Lizard запросит аутентификацию, пройдите по ссылке входа перед продолжением.
Вставьте этот промпт развертывания в Cursor:
Deploy this app with Lizard and Managed Postgres. First read the full output
of `lizard skills get core --json`. Check the current project link and git
remote, then show me the target project, service, region, and resources.
Wait for approval before creating resources or changing a live service.
If this app has a GitHub remote, connect that repository without starting
the first build. If it has no GitHub remote, use local source upload.
Create or select the intended database. Set DATABASE_URL on the app service
using a reference to that database's actual name. Configure the app's other
required variables and its reviewed production migration command before
deploying. Keep secret values out of the chat and repository.
Use the build settings this project needs. Read build and runtime logs,
check the final deployment status, and return the public URL. Test the
app's database-backed action and report what passed or failed.Руководство для агента кодирования содержит полные команды для обоих путей источника. Держите это руководство под рукой, пока вы проверяете работу агента.
3. Подключите Postgres до первого развертывания
Сервис может успешно собраться, а затем упасть при первом запросе к базе данных. Настройте подключение перед запуском первой сборки или релиза.
Для нового сервиса с именем web в предполагаемом связанном проекте, с приложением в корне репозитория GitHub, шаг подключения выглядит так. Замените YOUR_ORG/YOUR_REPO на ваш репозиторий:
lizard add --repo YOUR_ORG/YOUR_REPO --name web --no-deploy --json
lizard add postgres --json
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service web --jsonИспользуйте существующий сервис или базу данных, если это целевой вариант. Пример предполагает, что новая база данных называется postgres. Если Lizard вернет другое имя, используйте его в ссылке. Одинарные кавычки не дают оболочке интерпретировать ${{...}}.
--no-deploy оставляет время на настройку базы данных, команды миграции и других обязательных параметров. Для монорепо или другой ветки также установите директорию приложения и ветку перед развертыванием. См. Managed Postgres для деталей подключения.
Если у вас нет GitHub-remote, агент может создать пустой сервис и загрузить локальные исходники с помощью lizard up. Для сервиса через GitHub используйте его поток развертывания GitHub для последующих обновлений: lizard up переключает сервис на загруженные исходники. Эти два пути — отдельные варианты.
4. Примените схему, которую ожидает ваше приложение
Создание PostgreSQL не создает таблицы вашего приложения. Ошибка подключения и ошибка отсутствующей таблицы требуют разных исправлений.
Используйте инструмент миграций, уже имеющийся в проекте. Для проектов Prisma с зафиксированными файлами миграций prisma migrate deploy применяет ожидающие миграции в продакшене. Prisma рекомендует запускать её через процесс развертывания. Она не генерирует Prisma Client, поэтому сборке всё равно нужен любой шаг генерации, который требует ваш проект. Документация Prisma по развертыванию описывает эту настройку.
Попросите Cursor настроить preDeployCommand сервиса с проверенной командой миграции. Убедитесь, что собранный образ содержит файлы миграций, требуемый CLI-пакет и его конфигурацию. Если миграции требуют подключения к базе данных, оно должно быть доступно в момент выполнения команды. Избегайте команды сброса разработки против данных, которые нужно сохранить.
Next.js также может читать данные во время сборки страницы. Подключение к базе данных, настроенное для запущенного сервера, не гарантирует, что запрос во время сборки увенчается успехом. Попросите Cursor проверить, когда выполняется каждый запрос, и использовать поведение рендеринга, которое требует страница. Руководство Next.js по самостоятельному хостингу охватывает поведение во время выполнения и сборки.
5. Проверьте сохраненные данные по публичному URL
Прочитайте результат развертывания и откройте его HTTPS-URL. Протестируйте функцию, которая нуждается в Postgres, а не останавливайтесь после загрузки главной страницы.
Для приложения задач используйте эту последовательность:
- Создайте задачу с узнаваемым именем, например
deployment-check-0909. - Перезагрузите страницу и убедитесь, что задача отображается.
- Откройте приватное окно браузера, при необходимости войдите в тот же аккаунт и проверьте задачу снова. Это помогает выявить приложения, которые сохраняют данные только в хранилище браузера.
- Разверните небольшое изменение кода через тот же путь источника. Убедитесь, что задача всё ещё существует и вы можете её обновить.
Адаптируйте проверку под ваше приложение: бронь, заметка или отправка формы могут служить той же цели. Используйте тестовые данные и проверьте, что каждый аккаунт может обращаться только к своим записям, прежде чем приглашать пользователей.
Если проверка не проходит, передайте Cursor неудачное действие и попросите его изучить логи сервиса:
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --jsonПервая команда читает логи сборки; вторая — логи приложения. Держите справочник по логам открытым для фильтров и устранения неполадок.
Почему приложение Cursor работает локально, но падает после развертывания?
Развернутое приложение может иметь другие переменные, новую базу данных или другую команду запуска. Сопоставьте симптом с соответствующей проверкой:
| Симптом | Что проверить |
|---|---|
| Страница загружается, но сохранение не работает | Ссылка на базу данных сервиса приложения, готовность базы данных и логи запросов |
| Postgres сообщает об отсутствующей таблице | Выполнялась ли продакшн-миграция против этой базы данных |
| Сборка падает на запросе к базе данных | Читает ли эта страница данные во время сборки и может ли она достичь базы данных тогда |
| Сервис никогда не становится здоровым | Продакшн-команда запуска, слушатель на 0.0.0.0 и совпадение портов приложения и сервиса |
Браузер всё ещё обращается к localhost | Жестко заданные URL или старое значение NEXT_PUBLIC_*; публичные переменные требуют пересборку |
| Записи исчезают в другом браузере | Хранилище только в браузере, мок-данные или другой аккаунт или база данных |
Попросите агента исправить причину, показанную в логах. Повторные развертывания с той же конфигурацией не исправят отсутствующую переменную или таблицу.
Сколько стоит хостинг приложения и Postgres?
Lizard использует pay as you go без ежемесячной подписки. Новые аккаунты получают $10 бесплатных средств на балансе, срок действия — 31 день. Приобретенные средства не имеют срока действия. Использование ресурсов списывается с баланса аккаунта; экран пополнения показывает любой комиссионный сбор перед подтверждением. См. текущие тарифы и условия оплаты.
И приложение, и Managed Postgres потребляют ресурсы. Lizard использует биллинг только за активные ресурсы, с платой за CPU, память, хранилище и исходящий трафик на условиях тарифа. Остановка приложения не останавливает отдельную базу данных, и удерживаемое хранилище томов всё ещё может нести расходы.
Измерьте приложение и базу данных вместе под ожидаемой нагрузкой. Пробные средства — способ протестировать развертывание; это не обещание бесплатного хостинга навсегда или фиксированной месячной стоимости для каждого приложения.
Вопросы перед развертыванием
Нужно ли мне экспортировать приложение из Cursor?
Для локального проекта ваши исходные файлы уже в папке проекта. Разверните этот код через подключенный репозиторий GitHub или локальную загрузку. Проверьте, что исходники включают файлы, необходимые для сборки и запуска.
Оплачивает ли подписка Cursor хостинг Lizard?
Нет. Cursor и Lizard — отдельные сервисы. Этот рабочий процесс использует Cursor для работы Lizard CLI; аккаунт Lizard оплачивает развернутое приложение и базу данных по своему тарифу.
Могу ли я сохранить свою существующую базу данных PostgreSQL?
Да, если развернутый сервер может к ней подключиться, и её настройки подключения соответствуют требованиям провайдера базы данных. Настройте серверную строку подключения, проверьте сетевой доступ и запустите те же тесты приложения. Вам не нужно создавать другую базу данных только для использования этого рабочего процесса.
Нужен ли мне личный домен перед развертыванием?
Начните с проверки публичного адреса, который Lizard возвращает для вашего веб-сервиса. Как только он работает, следуйте инструкциям по личному домену, чтобы подключить свой хостнейм и проверить DNS-записи. Если ваше приложение использует callback URL для входа, обновите их тоже.
Откройте свой проект в Cursor и начните с промпта подготовки выше. Для точной последовательности развертывания используйте руководство для агента кодирования.
Разрабатывайте с ИИ. Развёртывайте с Lizard.
Вам не нужна платформенная команда, чтобы выйти в продакшн. Весь ваш облак — в одной команде CLI.
- Рабочие пространства
- —
- Сервисы
- —
- Аддоны
- —
- Развёртывания
- —