academy.alxx.ru
Теория, практика, справка
Практика

Подключение PostgreSQL в CapRover

Как поднять PostgreSQL в CapRover, не потерять данные и подключить приложение через DATABASE_URL.

Подключение PostgreSQL в CapRover

Заметка. Главный принцип: приложение и база должны жить отдельно. Приложение обновляется через новый deploy, а база хранит данные в persistent volume.

Что должно быть готово

  • рабочий сервер с CapRover
  • домен и HTTPS для приложения уже настроены или готовы к настройке
  • понимание, какое приложение будет использовать базу
  • доступ в CapRover Dashboard

Шаг 1. Создай отдельное приложение PostgreSQL

Подними базу отдельным app или через one-click app. Важный момент: для PostgreSQL нужно включить Persistent Data.

Важно. Не запускай PostgreSQL внутри контейнера самого сайта. При повторном deploy это создаёт риск потерять данные или смешать роли приложения и базы.

Шаг 2. Зафиксируй ключевые параметры

Тебе понадобятся:

  • имя пользователя базы
  • пароль
  • имя базы
  • внутренний адрес сервиса в сети CapRover
  • порт PostgreSQL

Обычно строка подключения выглядит так:

bash
postgresql://USER:PASSWORD@SERVICE_NAME:5432/DB_NAME?schema=public

Шаг 3. Пропиши DATABASE_URL в приложении

В приложении открой переменные окружения и добавь:

bash
DATABASE_URL=postgresql://USER:PASSWORD@SERVICE_NAME:5432/DB_NAME?schema=public

Если приложение использует Prisma, именно эта переменная будет основной точкой подключения.

Шаг 4. Проверь миграции и старт приложения

После добавления DATABASE_URL приложение должно:

  • увидеть базу
  • применить миграции или db push
  • подняться без ошибок подключения

Если используется Prisma, базовый рабочий сценарий такой:

bash
npx prisma generate
npx prisma db push
node prisma/seed.js

Шаг 5. Проверь, что данные не живут в контейнере приложения

Убедись, что:

  • persistent storage включён только у базы
  • приложение не пишет важные данные в локальную файловую систему контейнера
  • резервные копии продуманы отдельно

Что должно получиться

После настройки:

  • приложение стартует без ошибок подключения
  • таблицы создаются
  • seed проходит
  • новый deploy приложения не затрагивает данные PostgreSQL
Задание. После первого успешного подключения сразу запиши себе: имя app базы, DATABASE_URL, способ восстановления и место хранения резервных копий. Эти четыре вещи чаще всего нужны в самый неподходящий момент.
Следующий урок

Резервное копирование сервера и базы

Что бэкапить, как часто и какие данные критично не потерять в рабочем проекте.

Продолжить