# Запуск 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](https://t.me/GlarusBIGroup). ## Не подключается к базе данных удаленного приложения **Как это обнаружить:** Если это новый экземпляр 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 не сохраняется **Как это обнаружить:** Это происходит, если вы видите экран настройки каждый раз, когда запускаете приложение. Наиболее распространенная причина — база данных приложения не примонтирована к файловой системе, а находится внутри контейнера. **Как это исправить.** Убедитесь, что вы предоставляете контейнеру [постоянный том][persistent-volume]. ## Внутренний порт неправильно переназначается **Как это обнаружить:** Запустите `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`. [configuring-application-database]: ../installation-and-operation/configuring-application-database.md [persistent-volume]: ../installation-and-operation/running-metabase-on-docker.md#mounting-a-mapped-file-storage-volume