DinD HostingПосібник
ENУК
Огляд/Посібник/Збірка й розгортання
РОЗДІЛ 04

Розгортання

Розгортання — це один запуск конвеєра: отримання коду, визначення, збірка, запуск, запис. Цей розділ показує кожен крок, що ви бачите під час його виконання і що робити, коли він зупиняється.

Два способи доставити код#

Завантаження архіву Git-репозиторій
Консоль Завантаження архіву — виберіть файл Git-репозиторій — URL і необов'язковий Ref
Формати .zip, .tar.gz, .tgz будь-який URL репозиторію, який платформа може клонувати без запиту логіна
Розмір до 512 МіБ (архів і розпакований вміст) неглибоке клонування, --depth 1
Версія саме те, що ви завантажите ref, який ви вкажете (гілка чи тег); порожньо — гілка за замовчуванням
Джерело в REST {"type":"archive","upload_id":"…"} {"type":"git","url":"…","ref":"main"}
MCP upload_archive (малі), create_upload_url (великі) → deploy_app deploy_app(source_type="git", url=…, ref=…)

Git не може запитати пароль

Клонування виконується неінтерактивно (GIT_TERMINAL_PROMPT=0). Репозиторій, якому потрібні облікові дані, має бути доступний без запиту. Якщо це не так, завантажте натомість архів із вихідним кодом.

hosting.example.com/projects/7
Розгортання
Вкладка «Розгортання» зі свіжим завантаженням: виберіть тип джерела, натисніть «Розгорнути», стежте за статусом.

Конвеєр#

  1. Отримання кодуклонувати репозиторій або розпакувати архів в окрему приватну теку збірки
  2. Визначенняпрочитати platform.yaml; інакше визначити середовище виконання за вашими файлами
  3. Генераціястворити Dockerfile для цього середовища виконання
  4. Збіркапередати контекст вашому демону й зібрати образ
  5. Запускзамінити контейнер застосунку; передати змінні середовища
  6. Записзберегти статус, маніфест і журнал; налаштувати маршрут домену

Розгортання — це фонові завдання. Консоль, GET /deployments/{id}/logs?stream=1 (server-sent events) і MCP-інструменти list_deployments / deploy_logs показують той самий живий журнал, доки завдання не завершиться, а потім — збережений журнал.

Що визначається#

Якщо platform.yaml немає, рішення приймає перший файл, що збігся:

Файл у корені вихідного коду Середовище виконання
package.json node
requirements.txt або pyproject.toml python
composer.json або public/index.php php
index.html static

Нічого не збіглося? Розгортання одразу завершується збоєм і підказує, що додати. Подробиці про кожне середовище виконання — у довіднику platform.yaml.

Як читати журнал збірки#

hosting.example.com/projects/7
Журнал збірки — розгортання #2
Журнал збірки. Перші рядки записує платформа — вони точно показують, що вона вирішила; середина — це власний вивід Docker.

Три рядки з # угорі слід прочитати першими:

  • # runtime=node version=24 (platform default) port=auto — середовище виконання, версія й звідки взято версію (platform.yaml, файл-підказка на кшталт .nvmrc або типове значення платформи);
  • # note: … — з'являється, коли підказку на кшталт engines.node: ">=18" знайдено, але проігноровано, бо це діапазон;
  • # base image: node:24-alpine (sha256:…) — точний образ, з якого почалася збірка.

Статуси#

СтатусЗначення
у черзіприйнято, чекає своєї черги
отримання кодуклонування або розпакування вихідного коду
збірказбірка образу у вашому демоні (найдовший крок)
працюєновий контейнер запущено; ця версія активна
збійзупинено з помилкою — вона показана над журналом

Коли розгортання завершується збоєм#

Старий застосунок замінюється лише після того, як новий образ зібрано, тож збій отримання коду, визначення чи збірки залишає працювати попередню версію. Відкрийте Журнал збірки — помилка знаходиться угорі діалогу та в кінці журналу.

Повідомлення (скорочено) Причина Що робити
cannot autodetect runtime… у корені вихідного коду немає жодного з файлів для визначення додайте platform.yaml з runtime: або виправте структуру архіву (запакуйте вміст теки, а не батьківську теку)
platform.yaml is invalid … unknown key помилка в написанні — невідомі ключі відхиляються навмисно виправте ключ, названий у повідомленні
python runtime: set 'start_cmd'… немає main.py / app/main.py задайте start_cmd
node runtime: no start command немає скрипта start і немає server.js / index.js додайте скрипт start або start_cmd
cannot pull base image … is that version published? version: вказує на випуск, якого не існує використайте наявну основну чи мінорну версію, див. версії
archive too large (> 512 MiB) розмір завантаженого або розпакованого архіву перевищує ліміт приберіть node_modules, результати збірки та медіафайли
interrupted by management restart платформу оновили або перезапустили посеред збірки просто розгорніть знову

Повторне розгортання та повернення назад#

  • Розгорніть знову з тим самим або новим джерелом — кожен запуск стає новим пронумерованим розгортанням і образом (platform/<slug>:<version>-<sha8>).
  • Повернення назад означає повторне розгортання старішого джерела: старішого git-ref (позначайте теги!) або старішого архіву. Кнопки відкату одним кліком немає.
  • Розгортання замінює контейнер, тож очікуйте короткого переривання, поки запускається новий. Дані в оголошених томах і в базах даних не зачіпаються.

Закріплюйте те, що випускаєте

Розгортайте з git-тега й закріплюйте version: повним x.y.z для збірок, що мають бути відтворюваними. Коротка версія відповідає найновішому відповідному випуску й оновлюється під час кожного розгортання.

Великі архіви (від 100 МБ)#

upload_archive передає файл усередині одного MCP-запиту й обмежений приблизно 3 МіБ. Для більшого агент просить одноразове посилання для завантаження, виконує PUT файлу на нього з оболонки, а потім розгортає отриманий upload_id. Механіку й ліміти описано в розділі API-токени, REST і MCP.