Сервис App Platform позволяет развернуть приложение с помощью Docker Compose, размещенного в репозитории. Это дает возможность запускать любые приложения, включая те, что работают на фронтенд- и бэкенд-фреймворках, не поддерживаемых сервисом напрямую.
Условия для корректного деплоя
Dockerfileи файлdocker-compose.ymlдолжны находиться в корне подключенного репозитория. Пример можно найти в Гитхабе. ЕслиDockerfileразмещен в другом месте, путь к нему необходимо указать явно в манифестеdocker-compose.yml. Например:
services:
app:
build:
context: ./app # Путь к папке с исходным кодом
dockerfile: ./docker/Dockerfile.prod # Явный путь к Dockerfile
- В манифесте нельзя использовать порты
80и443в качестве хост-портов — они зарезервированы под веб-сервер. Вместо них используйте любые другие порты. - Проксирование настраивается только для первого сервиса в
docker-compose.yml. Остальные сервисы, если у них заданы хост-порты, будут доступны с их явным указанием. Например:
services:
my-app:
ports:
- "9000:80"
adminer:
ports:
- "8080:8080"
В этом случае my-app доступен по основному домену, а adminer — по http://домен:8080.
-
В
docker-compose.ymlнельзя использовать следующие директивы:-
cap_add -
cgroup -
cgroup_parent -
devices -
privileged -
device_cgroup_rules -
volumes -
ipc -
pid -
security_opt -
userns_mode -
sysctls -
volumes_from -
uts -
extra_hosts -
use_api_socket -
network_mode: container:... -
include -
extends
Также запрещены параметры:
-
externalв секцияхvolumes,networks,configsиsecrets; -
name; -
driver_opts;
И выход за пределы разрешенной директории (
path traversal) в значенииfileдляconfigsиsecrets.При попытке задеплоить манифест с любой из этих директив или параметров возникнет ошибка.
-
- При настройке сети запрещен режим
host.
Шаг 1. Выбор приложения
В пункте «Тип» перейдите на вкладку Docker и выберите Docker Compose.

Шаг 2. Подключение репозитория
Выберите репозиторий с приложением. В корне репозитория должен быть размещен docker-compose.yml.
Репозиторий можно подключить:
-
Из вашего аккаунта GitHub, GitLab или BitBucket. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории.
-
По URL, указав ссылку на репозиторий, созданный на любой платформе. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа.
Подробнее о подключении репозиториев — здесь.
Шаг 3. Выбор ветки и коммита

Выберите ветку для деплоя.
В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (master, main или default).
По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае App Platform выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий.
При необходимости вы сможете отключить автодеплой в дальнейшем.
Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию.
Шаг 4. Регион и конфигурация сервера
Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная».
В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф.

Шаг 5. Настройка приватной сети

На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя.
Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты.
Шаг 6. Настройка приложения
Сервис автоматически прочитает инструкции из docker-compose.yml и соберет приложение в соответствии с ними.
На этом этапе вы можете задать переменные, если это необходимо. Если они прописаны в docker-compose.yml или в Dockerfile, дублировать их не требуется.

Переменные можно использовать как на этапе сборки, так и во время выполнения приложения. Чтобы использовать переменные в качестве аргументов сборки, передайте их в docker-compose.yml следующим образом:
build:
context: .
args:
- ARGUMENT_VAR=${example_var}
После этого вы сможете использовать переменную в Dockerfile:
ARG ARGUMENT_VAR=${example_var}
В дальнейшем у вас будет возможность внести изменения в параметры приложения, а также выбрать другую ветку и коммит, и перезапустить деплой с новыми настройками, если потребуется.
Шаг 7. Информация о приложении
Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления.
Также выберите, в какой проект его нужно добавить.

Эти настройки также можно изменить в дальнейшем.
Шаг 8. Деплой
Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя во вкладке «Деплой».
Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы.
При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе.

IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Привязать собственный домен можно по нашей инструкции.

В дальнейшем App Platform будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями.