Описание шаблона
Template() создаёт конструктор. Каждый вызов добавляет инструкцию и возвращает тот же конструктор, поэтому шаги можно записать цепочкой.
В примере Ubuntu используется как основа. Затем AgentBox устанавливает Python, задаёт рабочий каталог, копирует файл и запускает HTTP-сервер. Команда проверки готовности завершает сборку только после появления файла по HTTP.
mjs
import { Sandbox, Template, waitForURL } from "@abox-dev/sdk";
const templateName = process.env.TEMPLATE_NAME ?? "python-service";
const template = Template({ fileContextPath: "." })
.fromUbuntuImage("24.04")
.aptInstall("python3")
.setWorkdir("/home/user/app")
.copy("message.txt", "/home/user/app/message.txt")
.setStartCmd(
"python3 -m http.server 8080",
waitForURL("http://localhost:8080/message.txt"),
);
await Template.build(template, templateName);
const sandbox = await Sandbox.create(templateName);
try {
const result = await sandbox.commands.run(
"whoami && pwd && curl --silent http://localhost:8080/message.txt",
);
console.log(result.stdout);
} finally {
await sandbox.kill();
}Основные инструкции
aptInstall,pipInstall,npmInstallиbunInstallустанавливают пакеты.copyиcopyItemsдобавляют локальные файлы.runCmdвыполняет одну команду или последовательность команд.setUserиsetWorkdirменяют контекст следующих инструкций.makeDir,remove,renameиmakeSymlinkуправляют файлами.gitCloneклонирует репозиторий во время сборки.
Переменные из setEnvs доступны только во время сборки. Переменные работающей песочницы задавайте при её запуске.
Полный список методов находится в справочнике SDK.