Запуск GlarusBI в Docker

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

  1. Контейнер запущен?

  2. Сервер работает внутри контейнера?

  3. Использует ли GlarusBI правильную базу данных приложения?

  4. Можете ли вы подключиться к хосту Docker через порт GlarusBI?

  5. Можно ли подключиться к контейнеру с хоста Docker?

  6. Можно ли подключиться к серверу из контейнера?

Следующие полезные команды часто используются при анализе ошибок. Запуск bash внутри контейнера GlarusBI:

docker exec -ti CONTAINER_NAME bash

Получение логов ошибок контейнера GlarusBI:

docker logs -f CONTAINER_NAME

Контейнер GlarusBI завершает работу без запуска сервера

Как это обнаружить: Запустите docker ps, чтобы узнать, запущен ли в данный момент контейнер GlarusBI. Если это так, перейдите к следующему шагу.

Если docker ps не показывает работающий контейнер, выведите список остановленных контейнеров, запустив:

docker ps -a | grep repo/image

Найдите контейнер, который показан последним, и запишите его идентификатор. Посмотрите на журналы этого контейнера с помощью:

Docker logs CONTAINER_ID

Контейнер GlarusBI запущен, но сервер не работает

Как это обнаружить: Запустите docker ps, чтобы убедиться, что контейнер запущен. Сервер должен регистрироваться в журналах контейнера Docker. Проверьте это, запустив:

docker logs CONTAINER_NAME

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

05-10 18:11:32 INFO metabase.util :: Loading GlarusBI...

Дальше вниз вы должны в конечном итоге увидеть строку вроде:

05-10 18:12:30 INFO metabase.core :: GlarusBI Initialization COMPLETE

Если вы видите строки ниже:

05-15 19:07:11 INFO metabase.core :: GlarusBI Shutting Down ...
05-15 19:07:11 INFO metabase.core :: GlarusBI Shutdown COMPLETE

затем GlarusBI закрылась.

Как это исправить. Проверьте журналы контейнера Docker на наличие ошибок при подключении к базе данных приложения. Просмотрите журналы, чтобы убедиться, что GlarusBI все еще запущена; команда:

Docker logs -f CONTAINER_ID

позволит вам увидеть журналы по мере их печати.

Если контейнер завершается до завершения запуска, проблема может заключаться в тайм-ауте проверки работоспособности в службе оркестровки, используемой для запуска контейнера, например Docker Cloud или Elastic Beanstalk.

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

Не подключается к базе данных удаленного приложения

Как это обнаружить: Если это новый экземпляр GlarusBI, то база данных, указанная вами через переменные среды, будет пустой. Если это существующий экземпляр GlarusBI с неправильными параметрами среды, сервер создаст новую встроенную базу данных H2 для использования с данными приложения, и вы увидите строки, подобные этим, в журнале:

05-10 18:11:40 INFO metabase.core :: Setting up and migrating GlarusBI DB. Please sit tight, this may take a minute...
05-10 18:11:40 INFO metabase.db :: Verifying h2 Database Connection ...

05-10 18:11:40 INFO metabase.db :: Verify Database Connection ...  ✅

Как это исправить: Убедитесь, что вы правильно передаете переменные среды в Docker. Вы можете перечислить их для контейнера с помощью этой команды:

docker inspect some-postgres -f '{% raw %}{{ .Config.Env }}{% endraw %}'

Сервер GlarusBI не может подключиться к базе данных MySQL или PostgreSQL

Как это обнаружить. Журналы контейнера Docker возвращают сообщение об ошибке после строки «Проверка подключения к базе данных».

Как это исправить: Попробуйте подключиться с помощью команды mysql или psql с параметрами строки подключения, которые вы передаете [через переменные среды][база данных конфигурирования-приложения]. Если вы не можете подключиться к базе данных, проблема связана либо с учетными данными, либо с подключением. Чтобы убедиться, что учетные данные верны, войдите в систему с этими учетными данными с другого компьютера, а затем попробуйте установить такое же подключение с хоста, на котором запущен контейнер Docker.

Один из простых способов запустить это — использовать Docker для запуска контейнера с соответствующим клиентом для вашей базы данных. Для Postgres это будет выглядеть так:

docker run --name postgres-client --rm -ti --entrypoint /bin/bash postgres

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

docker exec -ti container-name bash

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

nc -v your-db-host 5432

Эти шаги помогут вам определить, связана ли проблема с сетью или с проверкой подлинности.

База данных приложения GlarusBI не сохраняется

Как это обнаружить: Это происходит, если вы видите экран настройки каждый раз, когда запускаете приложение. Наиболее распространенная причина — база данных приложения не примонтирована к файловой системе, а находится внутри контейнера.

Как это исправить. Убедитесь, что вы предоставляете контейнеру постоянный том.

Внутренний порт неправильно переназначается

Как это обнаружить: Запустите docker ps и посмотрите на сопоставление портов, затем запустите curl http://localhost:port-number-here/api/health. Это должно вернуть ответ JSON, который выглядит так:

{"status":"ok"}

Как это исправить: Обязательно включите -p 3000:3000 или аналогичное переназначение порта в команду docker run, которую вы используете для запуска образа контейнера GlarusBI.

GlarusBI не может записывать или читать в/из файла или каталога

Как это обнаружить: Сообщение в журналах будет явно указывать на ошибку IOError или «Отказано в доступе» из Java или ошибки из SQLite, содержащие org.sqlite.core.NativeDB._open_utf8.

Как это исправить: Убедитесь, что у пользователя, работающего с GlarusBI, есть разрешение на чтение и запись в файл или каталог:

  • Если вы запускаете GlarusBI в виде файла JAR на локальном компьютере или сервере, проверьте пользователя, который запускает процесс Java.

  • Если вы запускаете GlarusBI из контейнера Docker, убедитесь, что вы используете каталог /metabase.db.

Если вы запускаете GlarusBI из JAR в любой Unix-подобной операционной системе, вы можете увидеть, какой пользователь запускает GlarusBI, открыв терминал и набрав ps -uA | GlarusBI grep.