Skip to main content

Совместимость приложений с Amvera

В теории Amvera может запускать любые приложения в контейнерах Docker. Однако чтобы приложение могло получать трафик извне и/или сохранять данные между перезагрузками, оно должно следовать определенным правилам.

Окружение

Если приложению нужно различать в каком окружении оно работает: Amvera или, например, локально на компьютере разработчика, можно использовать переменную окружения AMVERA. В окружении Amvera эта переменная задана и имеет значение 1.

Сетевое взаимодействие

Для получения трафика извне приложение должно работать по протоколу HTTP и слушать определенный TCP порт. Чтобы не прописывать явно номер порта, можно использовать переменную окружения PORT. По умолчанию ее значение равно 80. Задать другое значение обычно можно в файле amvera.yml.

Каждому приложению генерируется SSL сертификат для обеспечения доступа по протоколу HTTPS. Это делается автоматически и не требует действий от пользователя.

Каждое приложение получает URL в формате <транслитерированное-имя-проекта>.<имя-пользователя.amvera.io>. Так, для проекта "Тест" пользователя "user" обратиться к приложению можно по адресу https://test.user.amvera.io/.

Приложения одного пользователя могут получать доступ друг к другу по внутренней сети. Для этого они получают имя amvera-<имя-пользовтаеля>-run-<транслитерированное-имя-проекта>. Так, для проекта "Тест" пользователя "user" обратиться к приложению из другого приложения можно по адресу amvera-user-run-test. Для этого приложение также должно слушать TCP порт 80 (или указанный в файле amvera.yml), но вы не ограничены протоколом HTTP.

Важно!

Взаимодействие по внутренней сети происходит без шифрования со стороны Amvera

Постоянное хранилище

Так как приложение работает в контейнере, любые данные, записанные на диск, будут утеряны с перезагрузкой контейнера. Чтобы сохранять важные данные, Amvera монтирует к контейнерам пользователей папку с постоянным хранилищем. Ее размер определяется тарифным планом. По умолчанию папка монтируется по адресу /data. Задать другое значение обычно можно в файле amvera.yml.

Возможные ошибки

Если при обращении к доменному имени возникает ошибка сертификата, значит сертификат еще не сгенерировался. Обычно сертификат генерируется быстро, однако в случае если мы столкнулись с ограничениями провайдера SSL сертификатов по частоте запросов, время генерации сертификата может быть увеличено. Попробуйте повторить запрос через 15-20 секунд.

Если при обращении к доменному имени возникает ошибка 404 (и это не ошибка самого проекта), значит либо доменное имя набрано неправильно, либо проект еще не разу не был развернут.

Если при обращении к доменному имени возникает ошибка 502, значит проект развернут, но не слушает 80 порт (намеренно или по ошибке).

Если при обращении к доменному имени возникает ошибка 503, значит в данный момент происходит перезапуск контейнера (по любой причине) и нет ни одного работающего инстанса. Обычно такое случается, когда работает менее трех инстансов.