Перейти к содержанию

Запуск Glarus BI в Docker

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

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

Быстрый старт Glarus BI

Используйте это краткое руководство для локального запуска версии Glarus BI. Инструкцию по запуску Glarus BI для промышленной эксплуатации см. ниже.

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

docker pull repo/image:latest

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

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

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

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

docker logs -f glarusBI

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

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

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

Установка для промышленной эксплуатации

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

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

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

Запуск Docker для промышленной эксплуатации

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

createdb metabaseappdb

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

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

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

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

Миграция на базу данных уровня промышленной эксплуатации

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

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

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

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

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

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

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

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, которая подбирается сценарием запуска Glarus BI. Например:

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

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

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

Если вы ранее запустили и настроили свою Glarus BI с помощью локальной базы данных, а затем остановили контейнер, ваши данные останутся там, если только вы не удалили контейнер с помощью команды 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

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

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

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

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

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

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

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

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

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

Вот пример файла docker-compose.yml для запуска контейнера Glarus BI с секретами для подключения к базе данных 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

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

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

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

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

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