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