До 12.5 млн токенов на тест ИИ-агента
Вход/ Регистрация

Деплой из Docker Compose

Сервис App Platform позволяет развернуть приложение с помощью Docker Compose, размещенного в репозитории. Это дает возможность запускать любые приложения, включая те, что работают на фронтенд- и бэкенд-фреймворках, не поддерживаемых сервисом напрямую.

Условия для корректного деплоя

  1. Dockerfile и файл docker-compose.yml должны находиться в корне подключенного репозитория. Пример можно найти в Гитхабе. Если Dockerfile размещен в другом месте, путь к нему необходимо указать явно в манифесте docker-compose.yml. Например:
    
services: app: build: context: ./app         # Путь к папке с исходным кодом       dockerfile: ./docker/Dockerfile.prod  # Явный путь к Dockerfile
  1. В манифесте нельзя использовать порты 80 и 443 в качестве хост-портов — они зарезервированы под веб-сервер. Вместо них используйте любые другие порты.
  2. Проксирование настраивается только для первого сервиса в docker-compose.yml. Остальные сервисы, если у них заданы хост-порты, будут доступны с их явным указанием. Например:
    
services: my-app: ports: - "9000:80" adminer: ports: - "8080:8080"

В этом случае my-app доступен по основному домену, а adminer — по http://домен:8080.

  1. В 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.

    При попытке задеплоить манифест с любой из этих директив или параметров возникнет ошибка.

  1. При настройке сети запрещен режим host.

Шаг 1. Выбор приложения

В пункте «Тип» перейдите на вкладку Docker и выберите Docker Compose.

Image5

Шаг 2. Подключение репозитория

Выберите репозиторий с приложением. В корне репозитория должен быть размещен docker-compose.yml

Репозиторий можно подключить:

  • Из вашего аккаунта GitHub, GitLab или BitBucket. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории.

  • По URL, указав ссылку на репозиторий, созданный на любой платформе. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа.

Подробнее о подключении репозиториев — здесь.

Шаг 3. Выбор ветки и коммита

Image3

Выберите ветку для деплоя.

В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (master, main или default).

По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае App Platform выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий. 

При необходимости вы сможете отключить автодеплой в дальнейшем.

Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию.

Шаг 4. Регион и конфигурация сервера

Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная».

В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф.

Be4444cf 7b4f 4ddf B9db A735db4d30ab

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

Image2

На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя.

Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты.

Шаг 6. Настройка приложения

Сервис автоматически прочитает инструкции из docker-compose.yml и соберет приложение в соответствии с ними. 

На этом этапе вы можете задать переменные, если это необходимо. Если они прописаны в docker-compose.yml или в Dockerfile, дублировать их не требуется.

Scr 20251107 Lyeg

Переменные можно использовать как на этапе сборки, так и во время выполнения приложения. Чтобы использовать переменные в качестве аргументов сборки, передайте их в docker-compose.yml следующим образом:

    
build: context: . args: - ARGUMENT_VAR=${example_var}

После этого вы сможете использовать переменную в Dockerfile:

    
ARG ARGUMENT_VAR=${example_var}

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

Шаг 7. Информация о приложении

Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления.

Также выберите, в какой проект его нужно добавить.

Scr 20251107 Lyhz

Эти настройки также можно изменить в дальнейшем.

Шаг 8. Деплой

Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя во вкладке «Деплой». 

Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. 

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

Image4

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

Image2

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

Была ли статья полезна?
Ваш ответ поможет улучшить документацию
Пока нет комментариев