Устранение неполадок Glarus BI в Docker¶
Docker упрощает многие аспекты работы с Glarus BI, но следует помнить о некоторых "подводных камнях". Если у вас возникли проблемы с Glarus BI в Docker, попробуйте приведённый ниже алгоритм устранения неполадок, а затем посмотрите подробности о конкретной проблеме, которую вы обнаружили, ниже.
- Контейнер запущен?
- Сервер работает внутри контейнера?
- Использует ли Glarus BI правильную базу данных приложения?
- Можно ли подключиться к хосту Docker через порт Glarus BI?
- Можно ли подключиться к контейнеру с хоста Docker?
- Можно ли подключиться к серверу из контейнера?
Следующие полезные команды часто используются при анализе ошибок. Запуск bash внутри контейнера Glarus BI:
Получение логов ошибок контейнера Glarus BI:
Контейнер Glarus BI завершает работу без запуска сервера¶
Как обнаружить
-
Запустите
docker ps
, чтобы узнать, запущен ли в данный момент контейнер Glarus BI. Если это так, перейдите к следующему шагу. -
Если
docker ps
не показывает работающий контейнер, выведите список остановленных контейнеров, запустив:
- Найдите контейнер, который показан последним, и запишите его идентификатор. Посмотрите на журналы этого контейнера с помощью:
Контейнер Glarus BI запущен, но сервер не работает¶
Как обнаружить
- Запустите
docker ps
, чтобы убедиться, что контейнер запущен. Сервер должен регистрироваться в журналах контейнера Docker. Проверьте это, запустив:
- Вы должны увидеть такую строку в начале:
- Ниже вы должны увидеть строку:
- Если вы видите строки ниже:
05-15 19:07:11 INFO metabase.core :: Glarus BI Shutting Down ...
05-15 19:07:11 INFO metabase.core :: Glarus BI Shutdown COMPLETE
значит после попытки запуска сервер Glarus BI завершил работу.
Решение
Проверьте журналы контейнера Docker на наличие ошибок при подключении к базе данных приложения. Просмотрите журналы, чтобы убедиться, что Glarus BI всё ещё запущена. Команда
позволит вам видеть строки журнала по мере их вывода.
Если контейнер останавливается до завершения запуска, проблема может заключаться в таймауте проверки работоспособности в службе оркестровки, используемой для запуска контейнера, например Docker Cloud или Elastic Beanstalk.
Если контейнер не завершается извне, но всё равно не запускается, эта проблема, вероятно, не специфична для Docker. Если вы используете образ, предоставленный Glarus BI, задайте вопрос в сообществе Glarus BI.
Не подключается к базе данных удалённого приложения¶
Как обнаружить
Если это новый экземпляр Glarus BI, то база данных, указанная вами через переменные среды, будет пустой. Если это существующий экземпляр Glarus BI с неправильными параметрами среды, сервер создаст новую встроенную базу данных H2 для использования с данными приложения, и вы увидите строки, подобные этим, в журнале:
05-10 18:11:40 INFO metabase.core :: Setting up and migrating Glarus BI 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. Вы можете перечислить их для контейнера с помощью этой команды:
Сервер Glarus BI не может подключиться к базе данных MySQL или PostgreSQL¶
Как обнаружить
Журналы контейнера Docker возвращают сообщение об ошибке после строки «Проверка подключения к базе данных».
Решение
- Попробуйте подключиться с помощью команды
mysql
илиpsql
с параметрами строки подключения, которые вы передаёте [через переменные среды][база данных конфигурирования-приложения]. - Если вы не можете подключиться к базе данных, проблема связана либо с учётными данными, либо с подключением. Чтобы убедиться, что учётные данные верны, войдите в систему с этими учётными данными с другого компьютера, а затем попробуйте установить такое же подключение с хоста, на котором запущен контейнер Docker.
- Один из простых способов запуска — использовать Docker для запуска контейнера с соответствующим клиентом для вашей базы данных. Для Postgres это будет выглядеть так:
- Из этого контейнера попробуйте подключиться к хосту базы данных с помощью клиентской команды в контейнере, например
psql
. Если вы можете подключиться из другого контейнера на том же хосте, попробуйте установить это подключение из самого контейнера Glarus BI Docker:
- Вы также можете попробовать подключиться к хосту базы данных с помощью команды
nc
и проверить, можно ли открыть соединение:
Эти шаги помогут вам определить, связана ли проблема с сетью или с проверкой подлинности.
База данных приложения Glarus BI не сохраняется¶
Как обнаружить
Это происходит, если вы видите экран настройки каждый раз, когда запускаете приложение. Наиболее распространённая причина — база данных приложения не примонтирована к файловой системе, а находится внутри контейнера.
Решение
Убедитесь, что вы предоставляете контейнеру постоянный том.
Внутренний порт неправильно переназначается¶
Как обнаружить
Запустите docker ps
и посмотрите на сопоставление портов, затем запустите curl http://localhost:port-number-here/api/health
. Это должно вернуть ответ JSON, который выглядит так:
Решение
Обязательно включите -p 3000:3000
или аналогичное переназначение порта в команду docker run
, которую вы используете для запуска образа контейнера Glarus BI.
Glarus BI не может записывать или читать в/из файла или каталога¶
Как обнаружить
Сообщение в журналах будет явно указывать на ошибку IOError
или Отказано в доступе
из Java или ошибки из SQLite, содержащие org.sqlite.core.NativeDB._open_utf8
.
Решение
-
Убедитесь, что у пользователя, работающего с Glarus BI, есть разрешение на чтение и запись в файл или каталог:
-
Если вы запускаете Glarus BI в виде файла JAR на локальном компьютере или сервере, проверьте пользователя, который запускает процесс Java.
-
Если вы запускаете Glarus BI из контейнера Docker, убедитесь, что вы используете каталог
/metabase.db
. -
Если вы запускаете Glarus BI из JAR в любой Unix-подобной операционной системе, вы можете увидеть, какой пользователь запускает Glarus BI, открыв терминал и набрав
ps -aux | grep metabase
.