Сервисы проекта: веб-сервисы, фоновые процессы и задачи по расписанию.

Добавляйте в проект фоновые процессы, задачи по расписанию, дополнительные веб-сервисы, базы данных и Valkey — из кода проекта, другого репозитория или готового образа. Они доступны друг другу по имени и оплачиваются одним счётом.

3 МИН ЧТЕНИЯ

Проект — это больше, чем один процесс. Рядом с основным приложением можно запустить обработчик очереди, ночную задачу, отдельный API, базу данных — каждый как сервис со своими ресурсами, и всё это в одном счёте.

Сервисы перечислены в Обзор приложения → Сервисы → Добавить сервис. В проекте может быть до 10 сервисов. Сначала должен быть запущен основной сервис, а подписка проекта должна быть активной (пробный период тоже считается).

Виды сервисов

ВидЧто это
Веб-сервисещё один сайт или API с собственным адресом
Фоновый процессработает постоянно: очереди, Horizon, Celery, обработчики сообщений
Задача по расписаниюзапускается по расписанию (формат cron, UTC), выполняет работу и останавливается
PostgreSQL, MySQL, Valkeyуправляемые базы данных — см. Базы данных

Откуда берётся код

Код этого проекта

Тот же код, запущенный по-другому: обработчик очереди, планировщик, WebSocket-сервер (например, Laravel Reverb), папка монорепозитория, отдельный API.

  • Команда обязательна — то, что запускает сервис, например php artisan queue:work или node worker.js.
  • Веб-сервис должен слушать порт из $PORT.
  • Задаче по расписанию также нужно Расписание в формате cron (UTC), например */5 * * * *.
  • Каждая новая версия основного сервиса разворачивается и в этих сервисах, поэтому они всегда работают на одном и том же коде.

Другой репозиторий

Веб-сервис или фоновый процесс из другого репозитория вашего подключённого Git-аккаунта — со своей веткой и, при необходимости, Папка проекта и Команды сборки и запуска (оставьте поле пустым, чтобы использовать то, что мы определим). У него свои развёртывания и версии, и он разворачивает каждый push в свою ветку. Превью веток для сервисов пока не создаются.

Готовый образ

Веб-сервис или фоновый процесс из готового образа (Docker-образа) в Docker Hub, GitHub Container Registry или любом другом реестре — например, nginx:1.27 или ghcr.io/org/app:tag.

  • Порт — порт, который слушает образ; мы также передаём его в $PORT.
  • Команда — необязательна; если оставить пустой, образ запускается так, как он собран.
  • Приватный реестр — имя пользователя и пароль или токен доступа. Они хранятся в зашифрованном виде, используются только для загрузки образа и больше не показываются.
  • При включённом автоматическом развёртывании мы раз в день проверяем, не указывает ли тег на более новую версию, и разворачиваем её. Загрузить образ заново на вкладке Развёртывания делает это сразу.

Обращение друг к другу по имени

Сервисы проекта общаются по частной сети по имени: сервис с именем api доступен остальным как api, база данных с именем db — как db, а основной сервис — как web. Панель показывает это как «В проекте доступен как «api»». Трафик между сервисами проекта не учитывается как трафик.

Каждый сервис получает переменные проекта — включая подключение к базе данных — и собственные переменные, которые имеют приоритет над переменными проекта. См. Переменные окружения.

Ресурсы и цена

У каждого сервиса свои Память, CPU и Диск, и цена такая же, как у любого приложения: $6 за ГБ памяти и $4 за ядро процессора в месяц, 10 ГБ диска включено на каждый ГБ памяти, далее $0.15 за ГБ. У сервиса может быть до 8 ГБ памяти.

Когда вы добавляете сервис, его цена добавляется к счёту проекта — за текущий месяц только оставшаяся его часть. Пока у проекта идёт бесплатный пробный период, новые сервисы бесплатны до его окончания.

В Обзор показано Всего за проект — сколько все сервисы проекта стоят вместе в месяц.

Фоновые процессы внутри самого приложения

Отдельный сервис нужен не всегда. На вкладке Процессы основного приложения есть:

  • Фоновые процессы — до 5 постоянно работающих процессов рядом с сайтом, например обработчик очереди. Они используют ресурсы приложения и перезапускаются при каждом развёртывании.
  • Команды по расписанию — до 10 команд по расписанию (формат cron, UTC). Их вывод находится в журнале в разделе Расписание.
  • Консоль — выполнение разовой команды внутри работающего приложения, с его переменными и базой данных. Команда может работать до 15 минут; интерактивные команды (tinker, командная оболочка) здесь не поддерживаются.

Отдельный сервис лучше, когда фоновому процессу нужны собственные ресурсы, — тогда тяжёлая очередь никогда не замедлит сайт.

Изменение сервиса

Откройте сервис из списка Сервисы. В его Настройки находятся команда, расписание, образ или ветка, а также его ресурсы; изменения сохраняются, и сервис перезапускается с ними. У каждого сервиса также есть свои Журнал и Мониторинг.

Всё ещё не можете разобраться?

Напишите живому инженеру — медианный ответ менее 3 минут в любое время суток.

Написать в поддержку