Сборка Docker-образа Greengage DB
В этом разделе описывается, как собрать Docker-образ Greengage DB (на основе Greenplum Database) и использовать этот образ для запуска тестового кластера в Docker-контейнере. Вы также можете использовать этот образ для запуска различных наборов тестов. Узнайте больше в разделе How to run tests.
Предварительные требования
Для выполнения действий, описанных в этом документе, в вашей операционной системе должны быть установлены git и Docker. В Windows также необходимо предварительно установить Windows Subsystem for Linux (WSL), так как шаги сборки нужно выполнять в среде Linux.
Клонирование репозитория Greengage DB
-
Клонируйте репозиторий greengage, указав требуемый тег и включив все подмодули:
$ git clone \ --branch 6.31.0 \ --recurse-submodules \ https://github.com/GreengageDB/greengage.gitПРИМЕЧАНИЕВ Windows репозиторий следует клонировать в файловую систему WSL (например, в каталог /home/<user>).
-
Измените текущий каталог на greengage:
$ cd greengage
Сборка Docker-образа Greengage DB
Docker-образ Greengage DB можно собрать на хостах x86_64 и ARM64:
-
На x86_64 используйте
docker build. -
На ARM64 (например, Apple Silicon) используйте
docker buildx build … --platform=linux/amd64для создания x86_64-совместимого образа.
Выполните соответствующую команду из каталога greengage:
$ docker build \
--tag greengagedb:6.31.0 \
--file ci/Dockerfile.ubuntu .
$ docker build \
--tag greengagedb:6.31.0 \
--build-arg OS_VERSION=24.04 \
--file ci/Dockerfile.ubuntu .
Эти команды собирают Docker-образ greengagedb на основе Ubuntu 22.04 или 24.04.
Образ включает в себя все библиотеки и утилиты, необходимые для сборки и запуска Greengage DB, а также скомпилированные бинарные файлы.
Работа с тестовым кластером
В этом разделе описывается запуск Docker-контейнера с Greengage DB и работа с тестовым кластером внутри этого контейнера.
Запуск Docker-контейнера
Чтобы создать и запустить Docker-контейнер для тестового кластера Greengage DB, выполните следующую команду:
$ docker run \
--name greengagedb6_demo \
--rm \
-it \
--sysctl 'kernel.sem=500 1024000 200 4096' \
greengagedb:6.31.0 \
bash -c "ssh-keygen -A && /usr/sbin/sshd && bash"
После создания и запуска контейнера откроется интерактивная сессия оболочки Bash. Теперь вы можете установить и настроить Greengage DB, а затем запустить тестовый кластер.
Установка и настройка Greengage DB
-
Выполните команду
sourceдля скрипта common.bash:$ source gpdb_src/concourse/scripts/common.bash -
Вызовите функцию
install_and_configure_gpdb, определенную в файле common.bash, чтобы распаковать бинарные файлы Greengage DB в /usr/local/greengage-db-devel/:$ install_and_configure_gpdb
Создание административного пользователя Greengage DB
Выполните следующий скрипт, чтобы создать системную учетную запись пользователя для запуска и администрирования Greengage DB:
$ gpdb_src/concourse/scripts/setup_gpadmin_user.bash
Эта команда создает пользователя gpadmin, генерирует пару SSH-ключей и назначает gpadmin владельцем каталога /usr/local/greengage-db-devel/.
Запуск кластера
Создайте и запустите тестовый кластер, вызвав функцию make_cluster:
$ make_cluster
Проверка кластера
Чтобы убедиться, что кластер работает правильно, вам необходимо подключиться к базе данных:
-
Переключитесь на пользователя
gpadmin:$ su - gpadmin -
Установите путь к Greengage DB и переменные окружения следующим образом:
$ source /usr/local/greengage-db-devel/greengage_path.sh -
Выполните команду
sourceдля скрипта gpdemo-env.sh, чтобы установить значения переменных окруженияPGPORTиMASTER_DATA_DIRECTORY:$ source gpdb_src/gpAux/gpdemo/gpdemo-env.sh -
Подключитесь к базе данных
postgres, созданной по умолчанию:$ psql postgresРезультат должен выглядеть следующим образом:
psql (9.4.26) Type "help" for help. postgres=#
-
Получите информацию об установленной версии Greengage DB:
SELECT version();Вывод может выглядеть следующим образом:
PostgreSQL 9.4.26 (Greengage Database 6.31.0 build commit:1dad26cc914d5f73d4ebfd0d124ff71953e1f573) on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0, 64-bit compiled on Jun 2 2026 14:44:24 (with assert checking)