502/503 ошибка при статусе «Приложение запущено»

Если развернув проект со статусом «Приложение запущено» вы наблюдаете 503 или 502 ошибку и нет логов, это связано с одной из нижеперечисленных причин.

Ошибка 502

Ошибка 502 в нашем случае чаще всего возникает в двух случаях:

  1. От несоответствия портов, прописанных в коде или команде запуска и портов, прописанных в файле конфигурации (amvera.yaml).

  2. Из-за того, что приложение работает на localhost, вместо 0.0.0.0.

Разберем оба случая более подробно.

Приложение слушает не тот порт

По умолчанию в Amvera Cloud открыт порт 80. При разработке веб приложения, вы указываете то, какой порт будет ваше приложение. Обычно это значение port в команде запуска приложения либо в значении параметра метода запуска приложения.

Например, если логика запуска вашего приложения в коде выглядит так (пример на Python, Flask):

if __name__ == "__main__":
    #...
    app.run(host="0.0.0.0", port=5000, debug=True)

То в amvera.yml нужно указать в значение параметра containerPort порт 5000.

# часть amvera.yaml
run:
  containerPort: 5000

Вместо 5000 можно указать номер порта, который слушает ваше приложение по аналогии.

Host не изменен на 0.0.0.0

Обычно в тех же параметрах запуска приложения указывается адрес (host), на котором будет работать ваше приложение. Как правило, этот параметр несет название host, а его значение по умолчанию - localhost (127.0.0.1— 127.255.255.254).

Если host оставлен в значении localhost(127.0.0.1— 127.255.255.254), а не 0.0.0.0 вы можете получить ошибку 502.

Если это так: поменяйте значение хоста на 0.0.0.0. В таком случае приложение будет работать на всех интерфейсах, а не только на localhost, что и требуется для успешного запуска приложения.

Пример, как должен выглядеть запуск вашего приложения (Python, Flask):

app.run(host='0.0.0.0', port=ваш порт)

Если ничего из этого не помогло решить проблему, проверьте, что вы пересобираете проект, а не просто перезапускаете или попробуйте повысить тариф.

Ошибка 503

Ошибка 503 говорит о том, что сервис недоступен. Как правило, явные причины следующие:

  1. Приложение фактически не запущено или не может запуститься в связи с какой-либо ошибкой.

  2. Сервис перегружен и нужно повысить тариф.

В первом случае необходимо проверить лог приложения, скорее всего там будет ошибка. Во втором - рекомендуется поднять тариф.

Рекомендация

Попробуйте запустить проект на одном из старших тарифов, и после успешного запуска измените тариф на более подходящий в разделе «Настройки».

Выбран неподходящий тариф

Иногда вашему проекту может не хватать ресурса ОЗУ или CPU. Попробуйте изменить тариф в разделе «Настройки», увеличив ресурс. Если причина только в тарифе - то проект заработает.

Причина может быть не только в тарифе, в связи с этим рекомендуем во время отладки выставить один из старших тарифов (чтобы исключить эту причину), и когда отладка завершена поменять на требуемый тариф.

Важно

На тарифе «Пробный» не работают БД и их клиенты(pgAdmin) из-за недостатка ОЗУ. Таким сервисам больше подходит тариф «Начальный» и выше.

Рекомендация

Для любых не тестовых проектов выбирать тариф уровня не ниже «Начальный».

Допущена ошибка в названии файла

При написании amvera.yaml или Dockerfile вы могли допустить ошибку в имени копируемого файла. Убедитесь, что все файлы указаны верно.

Ошибка в зависимостях

Проверьте, все ли зависимости верно указаны. Особенно это касается проектов на Python. Убедитесь, что у Вас есть файл requirements.txt и в нем перечислены все требуемые зависимости. Этот файл должен находиться в корне проекта. Если это не так, укажите путь до него в amvera.yaml:

# часть amvera.yml
build:
  requirementsPath: src/requirements.amvera.txt

Вместо src/requirements.amvera.txt укажите путь до вашего файла requirements.txt

Подсказка

Если не получается разобраться, пишите в поддержку support@amvera.ru. Просим сразу указывать имя пользователя и проекта. Мы постараемся помочь.