Запуск GlarusBI в Docker

GlarusBI предоставляет официальный образ Docker, находящийся в репозитории компании Glarus Digital, который можно использовать для развертывания в любой системе, на которой работает Docker.

Если вы пытаетесь обновить версию GlarusBI в Docker, ознакомьтесь с инструкцией по обновлению.

Быстрый старт GlarusBI с открытым кодом

Используйте это краткое руководство для локального запуска версии GlarusBI с открытым исходным кодом. Инструкцию по запуску GlarusBI в рабочей среде см. ниже.

Предполагая, что у вас установлен и запущен Docker, получите последний образ Docker:

docker pull repo/image:latest

Затем запустите контейнер GlarusBI:

docker run -d -p 3000:3000 --name glarusBI repo/image

Это запустит сервер GlarusBI на порту 3000 по умолчанию.

Опционально: чтобы просмотреть логи запуска по мере инициализации GlarusBI с открытым исходным кодом, запустите:

docker logs -f glarusBI

После завершения запуска вы можете получить доступ к главной странице GlarusBI по адресу http://localhost:3000.

Чтобы запустить GlarusBI на другом порту, скажем, на 12345 выполните следующее:

docker run -d -p 12345:3000 --name glarusBI repo/image

Промышленная инсталляция

GlarusBI поставляется со встроенной базой данных H2, которая использует файловую систему для хранения собственных данных приложения. Это означает, что если вы удалите контейнер, вы потеряете данные приложения GlarusBI (ваши вопросы, информационные панели, коллекции и т. д.).

Если вы хотите запустить GlarusBI в среде промышленной эксплуатации, вам необходимо хранить данные приложения в базе данных промышленной эксплуатации.

После того, как вы подготовили базу данных, такую как Postgres, для GlarusBI, чтобы использовать ее для хранения данных своего приложения, все, что вам нужно сделать, это предоставить GlarusBI информацию о подключении и учетные данные, чтобы GlarusBI могла подключиться к ней.

Запуск Docker в продуктиве

Допустим вы запустили вашу данных Postgress следующим образом:

createdb metabaseappdb

Нет необходимости вручную добавлять какие-либо таблицы; GlarusBI сама создаст их при запуске. И давайте предположим, что база данных доступна через my-database-host:5432 с именем пользователя name и паролем password.

Вот пример команды Docker, которая запускает GlarusBI с использованием этой базы данных:

docker run -d -p 3000:3000 \
  -e "MB_DB_TYPE=postgres" \
  -e "MB_DB_DBNAME=metabaseappdb" \
  -e "MB_DB_PORT=5432" \
  -e "MB_DB_USER=name" \
  -e "MB_DB_PASS=password" \
  -e "MB_DB_HOST=my-database-host" \
   --name glarusBI repo/image

Имейте в виду, что GlarusBI будет подключаться изнутри вашего контейнера Docker, поэтому убедитесь, что либо: а) вы используете полное имя хоста, либо б) что вы установили правильную запись в файл /etc/hosts вашего контейнера файл.

Миграция на продуктив

Если вы уже использовали GlarusBI с базой данных приложения по умолчанию (H2), а теперь хотите использовать базу данных для промышленной эксплуатации приложени, не потеряв свои данные (ваши вопросы, информационные панели и т. д.), см. Миграция с H2 на рабочую базу данных .

Пример составления Docker YAML файла

Вот пример файла docker-compose.yml для запуска Glarus BI с базой данных PostgreSQL. metabaseappdb:

version: '3.9'
services:
  metabase:
    image: metabase/metabase:latest
    container_name: metabase
    hostname: metabase
    volumes:
    - /dev/urandom:/dev/random:ro
    ports:
      - 3000:3000
    environment:
      MB_DB_TYPE: postgres
      MB_DB_DBNAME: metabaseappdb
      MB_DB_PORT: 5432
      MB_DB_USER: metabase
      MB_DB_PASS: mysecretpassword
      MB_DB_HOST: postgres
    networks:
      - metanet1
    healthcheck:
      test: curl --fail -I http://localhost:3000/api/health || exit 1
      interval: 15s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres:latest
    container_name: postgres
    hostname: postgres
    environment:
      POSTGRES_USER: metabase
      POSTGRES_DB: metabaseappdb
      POSTGRES_PASSWORD: mysecretpassword
    networks:
      - metanet1
networks:
  metanet1:
    driver: bridge

Дополнительная настройка Docker

Конфигурирование Jetty сервера GlarusBI

Вы можете использовать любые пользовательские настройки из Настройка веб-сервера Jetty GlarusBI, установив переменные среды в команде запуска Docker.

Переменные среды, специфичные для Docker

В дополнение к стандартным пользовательским настройкам существуют две специфичные для докера переменные среды «MUID» и «MGID», которые используются для установки идентификаторов пользователя и группы, используемых GlarusBI при работе в контейнере докера. Эти параметры позволяют сопоставлять права доступа к файлам, когда, например файлы базы данных приложения, совместно используются хостом и контейнером.

При следующем запуске вы будете использовать файл базы данных, принадлежащий вашей учетной записи и хранящийся в вашем домашнем каталоге:

docker run -d -v ~/my-metabase-db:/metabase.db --name glarusBI -e MB_DB_FILE=/metabase.db -e MUID=$UID -e MGID=$GID -p 3000:3000 repo/image

Установка временной зоны Java

Лучше всего установить часовой пояс Java таким образом, чтобы он соответствовал часовому поясу, в который должны работать все ваши отчеты. Это можно сделать, просто указав переменную среды JAVA_TIMEZONE, которая подбирается сценарием запуска GlarusBI. Например:

docker run -d -p 3000:3000 \
  -e "JAVA_TIMEZONE=US/Pacific" \
  --name glarusBI repo/image

Копирование базы данных приложения (метаданных)

Расположение базы данных приложения по умолчанию в контейнере — /metabase.db/metabase.db.mv.db. Вы можете скопировать этот каталог из контейнера, используя следующую команду (заменив CONTAINER_ID фактическим идентификатором или именем контейнера, metabase, если вы так назвали контейнер):

docker cp CONTAINER_ID:/metabase.db ./

Содержимое БД останется в каталоге с именем metabase.db.

Монтирование тома хранилища файлов

Чтобы сохранить ваши данные вне контейнера и сделать их доступными для использования между запусками контейнера, мы можем смонтировать локальный путь к файлу внутри нашего контейнера.

docker run -d -p 3000:3000 \
  -v ~/metabase-data:/metabase-data \
  -e "MB_DB_FILE=/metabase-data/metabase.db" \
  --name glarusBI repo/image

Когда вы запускаете свой контейнер, GlarusBI будет использовать файл базы данных (MB_DB_FILE) в ~/metabase-data/metabase.db вместо его расположения по умолчанию. При этом мы смонтируем эту папку из нашей локальной файловой системы в контейнер.

Получить конфиг, если докер остановлен

Если вы ранее запустили и настроили свою GlarusBI с помощью локальной базы данных, а затем остановили контейнер, ваши данные останутся там, если только вы не удалили контейнер с помощью команды docker rm. Чтобы восстановить предыдущую конфигурацию:

1. Идентифицируйте остановленный контейнер с помощью команды docker ps -a:

docker ps -a | grep metabase
    ca072cd44a49        metabase/metabase        "/app/run_metabase.sh"   About an hour ago   Up About an hour          0.0.0.0:3000->3000/tcp   metabase
    02e4dff057d2        262aa3d0f714             "/app/run_metabase.sh"   23 hours ago        Exited (0) 23 hours ago                            pedantic_hypatia
    0d2170d4aa4a        262aa3d0f714             "/app/run_metabase.sh"   23 hours ago        Exited (0) 23 hours ago                            stoic_lumiere

Как только вы определите остановленный контейнер с вашей конфигурацией, сохраните идентификатор контейнера из крайнего левого столбца для следующего шага.

2. Используйте docker commit, чтобы создать новый пользовательский образ докера из остановленного контейнера, содержащего вашу конфигурацию.

docker commit ca072cd44a49 mycompany/metabase-custom
sha256:9ff56186de4dd0b9bb2a37c977c3a4c9358647cde60a16f11f4c05bded1fe77a

3. Запустите новый образ с помощью docker run, чтобы снова начать работу.

docker run -d -p 3000:3000 --name glarusBI repo/image
430bb02a37bb2471176e54ca323d0940c4e0ee210c3ab04262cb6576fe4ded6d

После этого запуска GlarusBI запустится с предыдущей конфигурацией. Если вы не получили то, что ожидали, попробуйте другой остановленный контейнер и повторите эти шаги.

Добавление внешних зависимостей или плагинов

Чтобы добавить файлы JAR для внешних зависимостей, (наприер, драйверы JDBC Oracle или Vertica или сторонние драйверы GlarusBI), сделайте следующее:

  • создайте каталог plugins в вашей хост-системе и

  • привяжите этот каталог, чтобы он был доступен для GlarusBI по пути /plugins (используя либо --mount, либо -v/--volume).

Например, если у вас есть каталог с именем /path/to/plugins в вашей хост-системе, вы можете сделать его содержимое доступным для GlarusBI, используя параметр --mount следующим образом:

docker run -d -p 3000:3000 \
  --mount type=bind,source=/path/to/plugins,destination=/plugins \
  --name glarusBI repo/image

Обратите внимание, что GlarusBI будет использовать этот каталог для извлечения плагинов, связанных с дистрибутивом GlarusBI по умолчанию (например, драйверов для различных баз данных, таких как SQLite), поэтому он должен быть доступен для чтения и записи для Docker.

Использование секретов Docker для сокрытия конфиденциальных параметров

Чтобы скрыть параметры подключения, вы можете использовать Docker Secrets, чтобы поместить все параметры в файлы, чтобы Docker мог прочитать и загрузить их в память перед запуском контейнера.

Вот пример файла docker-compose.yml для запуска контейнера GlarusBI с секретами для подключения к базе данных PostgreSQL.

В дополнение к этому примеру файла yml вам нужно создать два файла:

  • db_user.txt

  • db_password.txt

Эти файлы должны находиться в том же каталоге, что и docker-compose.yml. Поместите db_user в файл db_user.txt и db_password в файл db_password.txt.

Обратите внимание на «_FILE» в переменных среды, у которых есть секрет):

Эти файлы должны находиться в том же каталоге, что и docker-compose.yml. Поместите db_user в файл db_user.txt и db_password в файл db_password.txt.

Обратите внимание на постфикс «_FILE» в переменных среды, для которых есть секрет:

version: '3.9'
services:
  GlarusBI:
    image: repo/image:latest
    container_name: GlarusBI
    hostname: GlarusBI
    volumes:
    - /dev/urandom:/dev/random:ro
    ports:
      - 3000:3000
    environment:
      MB_DB_TYPE: postgres
      MB_DB_DBNAME: metabase
      MB_DB_PORT: 5432
      MB_DB_USER_FILE: /run/secrets/db_user
      MB_DB_PASS_FILE: /run/secrets/db_password
      MB_DB_HOST: postgres
    networks:
      - glarusbinet
    secrets:
      - db_password
      - db_user
    healthcheck:
      test: curl --fail -I http://localhost:3000/api/health || exit 1
      interval: 15s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres:latest
    container_name: postgres
    hostname: postgres
    environment:
      POSTGRES_USER_FILE: /run/secrets/db_user
      POSTGRES_DB: metabase
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    networks:
      - glarusbinet
    secrets:
      - db_password
      - db_user
networks:
  glarusbinet:
    driver: bridge
secrets:
   db_password:
     file: db_password.txt
   db_user:
     file: db_user.txt

В настоящее время поддерживаются следующие переменные среды для использования в качестве секретов:

  • MB_DB_USER

  • MB_DB_PASS

  • MB_DB_CONNECTION_URI

  • MB_EMAIL_SMTP_PASSWORD

  • MB_EMAIL_SMTP_USERNAME

  • MB_LDAP_PASSWORD

  • MB_LDAP_BIND_DN

Чтобы контейнер GlarusBI мог читать файлы и использовать содержимое в качестве секрета, к имени переменной среды необходимо добавить постфикс “_FILE”, как описано выше.

Поиск неисправностей

См. запуск GlarusBI в Руководстве по устранению неполадок.

Продолжение установки

Теперь, когда вы установили GlarusBI, пришло время настроить ее и подключить к базе данных.