Миграции БД (goose v3 / hgoose)
- Инструмент:
github.com/pressly/goose/v3(в репозитории — утилитаcmd/hgoose). - Таблица версий:
migrations(настраивается ключом-table). - Диалект: PostgreSQL (устанавливается автоматически).
Базовые команды:
bash
# Просмотр статуса
hgoose -dir ./migrations status
# Применить все новые миграции
hgoose -dir ./migrations up
# Откатить одну миграцию
hgoose -dir ./migrations down
# Создать заготовку SQL миграции
hgoose -dir ./migrations create add_new_index sqlЧерез deploy.sh (рекомендуется для серверов)
Если используете deployment-бандл, миграции вызываются через deploy.sh:
bash
# Применить миграции
./deploy.sh migrate
# Статус миграций
./deploy.sh migrate-status
# Откатить одну миграцию
./deploy.sh migrate-downdeploy.sh автоматически подставляет -dir ./migrations и использует бинарник hgoose из бандла.
Docker
В Docker-среде перед запуском приложения:
bash
docker exec marv-app hgoose -dir /app/migrations upИли через docker-compose:
bash
docker-compose exec app hgoose -dir /app/migrations upРекомендации
- Держите миграции атомарными и идемпотентными (проверки
IF EXISTS/IF NOT EXISTS). - Для индексов используйте отдельные файлы миграций.
- Проверяйте локально
up/downперед релизом. - Файлы миграций (
migrations/*.sql) включаются в deployment-бандл автоматически.
Конфигурация подключения
hgoose получает параметры подключения к БД из конфига MARV (infrastructure.postgres.*). Режим конфига определяется переменной GIN_MODE (debug/release/test).
