Перейти к содержимому

Описание шаблона

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.