# Запуск Получив команду на запуск, облако Amvera ищет в папке Code [конфигурационный файл](configuration/config-file.md) `amvera.yaml`. Возможны три ситуации: 1. **Отсутствует `amvera.yaml`, но удается найти `Dockerfile`.** - Начинается запуск образа, полученного в результате сборки [Dockerfile](configuration/docker.md). 2. **Отсутствует и `amvera.yaml` и `Dockerfile`.** - Запуск завершается ошибкой. 3. **Присутствует `amvera.yaml`.** - Начинается запуск приложения. ## Процесс запуска с `amvera.yaml` ![build_proc](../img/run_proc.png) Облако Amvera считывает раздел ``meta`` из файла конфигурации amvera.yaml и ищет подходящий инструмент для запуска в [списке поддерживаемых окружений](supported-env.rst). Под инструментом для запуска подразумевается готовый образ с установленным в него программами, которые позволят запустить приложение (python, JVM и т.д). Выбранный благодаря конфигурации образ запускается в новом контейнере с параметрами, указанными в секции `run` этой-же конфигурации. В процессе создания контейнера в него [монтируются](storage.md) две папки: * ``artifacts`` - [папка](storage.md#artifacts) с полученными в результате процесса сборки файлами (может затираться при пересборке). Монтирование происходит в папку ``/app`` запущенного контейнера. * ``data`` - [папка постоянного хранилища](storage.md#data), которую не затрагивает процесс сборки и, следовательно, файлы остаются нетронутыми. Для хранения получаемых в процессе работы программы данных, таких как: БД, логи и т.д. необходимо использовать именно эту папку. Монтирование происходит в папку ``/{persistenceMount}``, заданную конфигурации (по умолчанию ``/data``). В процессе запуска статус приложения будет "Выполняется запуск", который при успехе сменится на "Приложение запущено". В случае, если статус "Ошибка развертывания" или проект долго висит в статусе "Выполняется запуск" стоит искать проблему в секции `run` файла конфигурации. ## Жизненный цикл ```{eval-rst} .. admonition:: Важно :class: warning В первые минуты работы приложения статус может быть "Ошибка работы приложения", так как приложение формально ещё не запустилось и Амвера не может явно определить его точный статус. ``` Amvera стремиться обеспечить бесперебойную работу развернутого приложения. Если приложение по какой-либо причине завершает работу (возникло исключение, программа дошла до конца) оно автоматически будет перезапущено. Если возникающая ошибка не дает проработать приложению больше минуты, то статус приложения переходит в "Ошибка работы приложения", однако облако продолжает пытаться его перезапустить снова и снова. Если впервые развернутое приложение находится в этом состояние больше получаса, то оно автоматически останавливается и переходит в статус "Остановлено из-за повторяющейся ошибки". ```{eval-rst} .. admonition:: Важно :class: warning Для профилактики ошибок работы приложения рекомендуем перейти во вкладку "Лог приложения" ``` ### Остановка приложения Если требуется на время остановить проект, можно воспользоваться кнопкой "Включить/Выключить" или задать желаемое кол-во реплик равное нулю на панели инструментов. При этом данные во всех папках остаются нетронутыми. Если приложение находится в выключенном статусе более 30 дней, то оно автоматически [замораживается](#заморозка-приложения). ### Заморозка приложения Если приложение больше не нужно, но вы хотите сохранить данные в репозитории и в постоянном хранилище, то можно воспользоваться кнопкой "Заморозить проект" во вкладке "Настройки". При заморозке полностью очищается папка Artifacts, а так-же привязанные домены. Приложение переходит в статус "Заморожено". Для разморозки требуется инициализировать процесс сборки проекта и выставить [кол-во желаемых реплик](../general/scaling.md) более нуля. ## Лог приложения Для отслеживания работы приложения следует воспользоваться консолью вывода логов, которая находится во вкладке "Лог приложения". Загрузка логов может занимать некоторое время и работать с задержкой. Для загрузки логов необходимо нажать на кнопку "Загрузить историю", которая расположена в нижнем правом углу окна логов и выглядит как циферблат. ![load_logs](../img/load_logs.png)