502/503 ошибка при статусе «Приложение запущен
Если развернув проект со статусом «Приложение запущено» вы наблюдаете 503 или 502 ошибку и нет логов, это связано с одной из нижеперечисленных причин.
Ошибка 502¶
Ошибка 502 в нашем случае чаще всего возникает в двух случаях:
От несоответствия портов, прописанных в коде или команде запуска и портов, прописанных в файле конфигурации (amvera.yaml).
Из-за того, что приложение работает на
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 говорит о том, что сервис недоступен. Как правило, явные причины следующие:
Приложение фактически не запущено или не может запуститься в связи с какой-либо ошибкой.
Сервис перегружен и нужно повысить тариф.
В первом случае необходимо проверить лог приложения, скорее всего там будет ошибка. Во втором - рекомендуется поднять тариф.
Рекомендация
Попробуйте запустить проект на одном из старших тарифов, и после успешного запуска измените тариф на более подходящий в разделе «Настройки».
Выбран неподходящий тариф¶
Иногда вашему проекту может не хватать ресурса ОЗУ или 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. Просим сразу указывать имя пользователя и проекта. Мы постараемся помочь.