Совместимость приложений с 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, значит в данный момент происходит перезапуск контейнера (по любой причине) и нет ни одного работающего инстанса. Обычно такое случается, когда работает менее трех инстансов.