Шаблон Next.js
Этот шаблон устанавливает Next.js 16 и запускает сервер разработки на порту 3000. Файлы package.json, app/layout.jsx и app/page.jsx лежат рядом с исходным файлом примера.
mjs
import { Sandbox, Template, waitForURL } from "@abox-dev/sdk";
const templateName = process.env.TEMPLATE_NAME ?? "nextjs-app";
const template = Template({ fileContextPath: "." })
.fromNodeImage("24-bookworm-slim")
.setWorkdir("/home/user/app")
.copy("package.json", "/home/user/app/package.json")
.copy("app", "/home/user/app/app")
.runCmd("npm install")
.setStartCmd(
"npm run dev -- --hostname 0.0.0.0",
waitForURL("http://localhost:3000"),
);
await Template.build(template, templateName, {
cpuCount: 2,
memoryMB: 2_048,
});
const sandbox = await Sandbox.create(templateName);
try {
const page = await sandbox.commands.run(
"curl --silent http://localhost:3000",
);
console.log(page.stdout);
} finally {
await sandbox.kill();
}Сначала копируется package.json, затем выполняется npm install, и только после этого копируется код приложения. При изменении страницы AgentBox сможет повторно использовать слой с зависимостями.
Команда проверки готовности ждёт ответ Next.js. Поэтому сразу после Sandbox.create сервер уже доступен внутри песочницы на http://localhost:3000.