Web-сервисы
Размещайте динамические веб-приложения и API — Express, FastAPI, Django, Rails, Go, Rust, что угодно — по публичному HTTPS-адресу. Деплой из Git или из готового Docker-образа.
Muerte Cloud собирает и деплоит ваш код при каждом пуше в привязанную ветку. Каждый web-сервис получает уникальный поддомен *.muerte.app и может подключить любое количество собственных доменов с полностью управляемым TLS. Сервисы в одном проекте общаются друг с другом по бесплатной приватной сети — без настройки VPC и без публичного доступа.
0.0.0.0, чтобы принимать трафик из публичного интернета. Ожидаемый по умолчанию порт — 8080, он передаётся вашему процессу через переменную окружения PORT. См. Привязка порта.Деплой шаблона#
Самый быстрый способ попробовать платформу — задеплоить один из стартовых шаблонов. Каждый из них — минимальное, но реальное приложение на выбранном стеке с уже настроенными командами сборки и запуска:
Деплой собственного кода#
Вы можете задеплоить web-сервис из подключённого репозитория GitHub, GitLab или Bitbucket, из публичного Git URL, либо из готового Docker-образа в любом реестре.
- 1Подключите Git-провайдерВойдите в панель Muerte Cloud, откройте
New → Web Serviceи подключите аккаунт GitHub, GitLab или Bitbucket. Поддерживаются как публичные, так и приватные репозитории, доступные вашему аккаунту. - 2Выберите репозиторий и веткуУкажите репозиторий и ветку, которая будет авто-деплоиться. Каждый пуш в эту ветку запускает новую сборку.
- 3Заполните форму сервиса
Field Description Name A name for the service inside the Muerte Cloud dashboard. It is also used as the default *.muerte.app subdomain. Region The geographic region where the service runs. Services in the same region and project share a free private network. Branch The Git branch to build. Every push to this branch triggers a new build and deploy. Language The runtime for your app. Muerte Cloud auto-detects Node.js, Python, Go, Ruby, Elixir, Rust, PHP and .NET — or use a Dockerfilefor anything else.Build Command Command that produces build artifacts. Typical values: npm ci && npm run build,pip install -r requirements.txt.Start Command Command that boots your HTTP server. Typical values: node dist/index.js,gunicorn app.wsgi. - 4Выберите тип инстансаТипы инстансов варьируются от небольшого общего инстанса до выделенных CPU-уровней с автомасштабированием. Инстанс можно сменить в любой момент без простоя.
- 5(Опционально) настройте дополнительные параметрыЗадайте переменные окружения и секреты, подключите постоянный диск, настройте путь health check, включите превью для pull request'ов и закрепите определённую версию рантайма.
- 6Создайте сервисНажмите Create Web Service. Muerte Cloud запускает первую сборку; прогресс можно наблюдать в реальном времени на вкладке
Deploysсервиса.
127.0.0.1 вместо 0.0.0.0, или сборка, которой не хватило памяти на выбранном инстансе. Проверьте логи сборки и рантайма на вкладке Deploys — каждая ошибка ведёт прямиком на проблемную строку лога.Привязка порта#
Каждый web-сервис должен привязать HTTP-сервер к порту на хосте 0.0.0.0. Edge Muerte Cloud терминирует TLS, затем пересылает входящие запросы в ваш контейнер по HTTP на этот порт. Сам контейнер никогда не доступен напрямую из публичного интернета.
Мы рекомендуем привязываться к порту, заданному переменной окружения PORT — так вам не придётся зашивать значение в код, и оно будет работать как локально, так и в продакшене.
const express = require("express");
const app = express();
const port = process.env.PORT || 8080;
app.get("/", (req, res) => {
res.send("Hello from Muerte Cloud");
});
app.listen(port, "0.0.0.0", () => {
console.log(`listening on ${port}`);
});| Field | Description |
|---|---|
| Порт по умолчанию | 8080. Можно переопределить в настройках сервиса, если фреймворк настаивает на другом значении по умолчанию. |
| Адрес привязки | Всегда 0.0.0.0. Привязка к 127.0.0.1 или localhost делает сервис недоступным и приводит к неудачному деплою. |
| Автоопределение | Если ваше приложение привязывается к другому порту, Muerte Cloud обычно определяет и использует его автоматически. Если определение не удалось, деплой помечается как нездоровый со ссылкой на строку лога, где ожидалась привязка. |
| Зарезервированные порты | 18012, 18013 и 19099 зарезервированы рантаймом платформы и не могут быть привязаны. |
Привязка к нескольким портам
Web-сервис предоставляет ровно один публичный HTTP-порт. Сервис может привязывать дополнительные порты для использования внутри приватной сети — внутренние админ-интерфейсы, gRPC-серверы, сборщики метрик — но публичный listener всегда должен быть привязан к $PORT.
Подключение к вашему web-сервису#
Из публичного интернета
Каждый сервис получает стабильный HTTPS-адрес вида https://<service>.muerte.app. В любой момент можно подключить один или несколько собственных доменов; TLS-сертификаты выпускаются и обновляются автоматически, включая wildcard-сертификаты.
Edge терминирует SSL, а затем пересылает трафик в ваш контейнер по HTTP. Запросы, пришедшие по обычному HTTP, перенаправляются на HTTPS перед пересылкой.
Из других сервисов вашего проекта
Сервисы в одном проекте могут обращаться друг к другу по приватной сети, используя имя сервиса как хост — без платы за ingress и без публичного доступа. Из воркера обращение к сервису с именем api выглядит так:
curl http://api:8080/healthДополнительные возможности#
Web-сервисы Muerte Cloud также включают из коробки: