Managed Postgres
Команда lizard add postgres добавляет в проект Lizard (lizard.build) базу PostgreSQL под управлением Managed Postgres. Новые базы по умолчанию работают на PostgreSQL 18. Lizard сохраняет строку подключения в DATABASE_URL, а её части записывает в PGHOST, PGPORT, PGUSER, PGPASSWORD и PGDATABASE; ваши сервисы читают их через ссылку вида ${{postgres.DATABASE_PRIVATE_URL}}. Вы платите за CPU, память и хранилище базы по тем же тарифам, что и для приложений, а в панели управления для неё есть SQL-редактор. Обзор и цены смотрите на странице Managed Postgres.
Создание
lizard add postgresПервое дополнение Postgres получает имя postgres, поэтому ${{postgres.DATABASE_URL}} работает сразу.
Переменные окружения
Дополнение предоставляет стандартный набор переменных подключения:
| Переменная | Описание |
|---|---|
DATABASE_URL | Полная строка подключения через публичную точку доступа (postgresql://…) |
DATABASE_PRIVATE_URL | Строка подключения через приватную сеть проекта (<name>.lizard.internal:5432) |
PGHOST | Хост |
PGPORT | Порт |
PGUSER | Пользователь |
PGPASSWORD | Пароль |
PGDATABASE | Имя базы данных |
POSTGRES_USER | Алиас пользователя |
POSTGRES_DB | Алиас базы данных |
POSTGRES_PASSWORD | Алиас пароля |
Строка подключения к Postgres
У каждой базы две строки подключения. Обе используют пользователя postgres и базу postgres:
| Переменная | Откуда подключаться | Формат |
|---|---|---|
DATABASE_PRIVATE_URL | Сервисы в том же проекте | postgresql://postgres:<password>@<name>.lizard.internal:5432/postgres |
DATABASE_URL | Ваша машина, CI или сервис в другом проекте | postgresql://postgres:<password>@<host>:<port>/postgres |
Вместо <name> подставьте имя базы в проекте; у первой базы это postgres. Публичные хост и порт Lizard назначает при создании базы, поэтому берите их из DATABASE_URL, PGHOST и PGPORT, а не вводите вручную. Приватный адрес работает только внутри проекта; см. приватную сеть.
Большинство драйверов принимают строку как есть:
// Node.js with pg
import pg from 'pg';
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });# Python with psycopg
import os, psycopg
conn = psycopg.connect(os.environ["DATABASE_URL"])psql и другие инструменты libpq читают переменные PG*, поэтому подключаются без аргументов.
Как посмотреть строку подключения?
- Панель управления: откройте базу в проекте. На вкладке Overview показаны
DATABASE_URLи приватный URL с кнопками копирования. На вкладке Secrets перечислены все переменные подключения и ссылка${{…}}, которую можно вставить в сервис. - CLI:
lizard run --service postgres -- printenv DATABASE_URLвыводит публичную строку. В ней есть пароль, поэтому не вставляйте её в логи и чаты.
Строка подключения содержит учётные данные. Подключайте к ней сервисы через ссылку, а не копируйте её в секрет: так сервисы получат актуальное значение при каждом развёртывании.
Подключение сервиса
Укажите ссылку на приватную строку подключения в сервисе, которому нужна база, и выполните повторное развёртывание:
lizard secrets set DATABASE_URL='${{postgres.DATABASE_PRIVATE_URL}}' --service api
lizard redeploy --service apiСсылка вычисляется при развёртывании, поэтому каждый сервис получает актуальные значения дополнения при следующем развёртывании. Для клиентов за пределами проекта используйте DATABASE_URL. Кроме того, каждый сервис в проекте получает публичный DATABASE_URL дополнения с самым низким приоритетом; явная ссылка переопределяет его.
Проверьте подключение со своего компьютера, не выводя строку подключения:
lizard run --service postgres -- sh -c 'psql "$DATABASE_URL" -c "SELECT 1"'lizard run --service postgres выполняет команду на вашем компьютере с публичными значениями подключения базы, поэтому локально должен быть установлен psql. lizard run --service api передаст ссылки ${{…}} как буквальный текст; см. lizard run.
Запуск миграций при развёртывании
Используйте команду перед развёртыванием для запуска миграций. Она выполняется только если задана также команда запуска, в виде sh -c "<pre> && exec <start>" при старте каждого контейнера: каждой реплики, каждого перезапуска. Сделайте миграции безопасными для многократного и одновременного запуска и совместимыми как со старой, так и с новой версией приложения:
lizard service set api --set preDeployCommand="npm run migrate" --set startCommand="npm start"
lizard redeploy --service apiДля приложения Django используется команда python manage.py migrate; см. руководство по Django и Хостинг Python-приложений. Руководства по Umami и Flowise показывают готовые приложения на Managed Postgres.
Просмотр данных и выполнение запросов
Откройте редактор Postgres в панели управления (lizard open), чтобы выполнять SQL-запросы и просматривать таблицы напрямую. Для разовых локальных задач выполните команду, используя значения подключения дополнения:
lizard run --service postgres -- sh -c 'exec psql "$DATABASE_URL"'Увеличение объёма хранилища
Объём хранилища данных можно только увеличивать:
lizard scale --service postgres --storage 8192Несколько баз данных
При добавлении второго экземпляра Postgres для него генерируется имя, например postgres-autumn-bear. Укажите ссылку на него явно:
lizard add postgres
lizard secrets set ANALYTICS_URL='${{postgres-autumn-bear.DATABASE_PRIVATE_URL}}' --service apiРезервные копии и восстановление
Не рассчитывайте на резервное копирование по расписанию или восстановление на момент времени. Перед рискованной миграцией сами выгрузите базу и проверьте восстановление в отдельной базе. Например, если локально установлен pg_dump 18 или новее:
lizard run --service postgres -- sh -c 'pg_dump "$DATABASE_URL" > backup.sql'План восстановления см. в разделе хранилище и восстановление.
См. также
- Управляемые дополнения — имена, ссылки и инструменты просмотра в панели управления.
- Межсервисные ссылки — синтаксис ссылок и порядок их вычисления.
Обновлено