Миграция
В качестве инструмента для миграции базы данных использует goose. Когда в качестве хранилища используется Postgres, goose запускается перед началом работы hbf-server'a. Более подробную информацию о goose можно найти здесь.
Перед запуском goose необходимо настроить скрипт миграции командой:
cat <<EOF > migration.sh
#!/bin/bash
SG_DB_USER="user"
SG_DB_PASSWORD="password"
SG_DB_URL="localhost:5432"
SG_DB_NAME="swarm"
SG_STORAGE_POSTGRES_URL="postgres://${SG_DB_USER}:${SG_DB_PASSWORD}@${SG_DB_URL}/${SG_DB_NAME}?sslmode=disable"
export SG_STORAGE_POSTGRES_URL=$SG_STORAGE_POSTGRES_URL
exec ./bin/goose postgres $SG_STORAGE_POSTGRES_URL up
EOF
- source
- docker
Сборка
Перед сборкой необходимо склонировать репозиторий
export VERSION=1.9.1
git clone https://github.com/H-BF/sgroups
cd sgroups
git fetch --tags --all
git checkout tags/v${VERSION}
make .install-goose
После сборки, скомпилированный бинарный файл будет доступен в папке ./bin/goose
в корне репозитория (не путать с /bin
,
расположенным в корне файловой системы).
По умолчанию файлы миграции расположены в папке ./internal/registry/sgroups/pg/migrations
, но пользователь может
указать и другой путь, определив переменную окружения PG_MIGRATIONS
.
Название | Описание | Значение по умолчанию |
---|---|---|
SG_STORAGE_POSTGRES_URL | Переменная необходимая для подключения к БД | |
PG_MIGRATIONS | Переменная, содержащая путь к файлам миграций | "./internal/registry/sgroups/pg/migrations" |
SG_DB_USER | Имя пользователя БД | |
SG_DB_PASSWORD | Пароль пользователя БД | |
SG_DB_URL | Адрес базы данных (HOST:PORT) | |
SG_DB_NAME | Имя БД | swarm |
Запуск
Для выполнения миграции базы данных вручную пользователь может запустить следующую команду (рекомендуемый способ):
sh migration.sh
Сборка
Перед развертыванием убедитесь, что у вас установлен docker:
docker -v
Клонируем репозиторий, переходим в директорию репозитория и переключаемся на тег необходимой версии командой:
export VERSION=1.9.1
git clone https://github.com/H-BF/sgroups
cd sgroups
git fetch --tags --all
git checkout tags/v${VERSION}
Собираем образ goose командой:
docker build -f docker/Dockerfile.goose --tag goose:v$(cat VERSION) .
По умолчанию файлы миграции расположены в папке ./internal/registry/sgroups/pg/migrations
, но пользователь может
указать и другой путь, определив переменную окружения PG_MIGRATIONS
.
Название | Описание | Значение по умолчанию |
---|---|---|
SG_STORAGE_POSTGRES_URL | Переменная необходимая для подключения к БД | |
PG_MIGRATIONS | Переменная, содержащая путь к файлам миграций | "./internal/registry/sgroups/pg/migrations" |
SG_DB_USER | Имя пользователя БД | |
SG_DB_PASSWORD | Пароль пользователя БД | |
SG_DB_URL | Адрес базы данных (HOST:PORT) | |
SG_DB_NAME | Имя БД | swarm |
Запуск
Для выполнения миграции базы данных с помощью Docker необходимо выполнить команду:
docker run -d -t --name=goose-migration --rm \
-v "./migration.sh:/app/migration.sh" \
--entrypoint /app/migration.sh \
goose:$(cat VERSION)