중지된 샌드박스 주문형 재개하기
중지된 샌드박스 주문형 재개하기
게시된 애플리케이션에 대한 요청이 중지된 샌드박스를 시작하게 해 봐요. 이것은 사용 사이에 활성 상태를 유지하지 않고도 주문형으로 사용 가능해야 하는 애플리케이션에 적합해요.
출처: 문서
본문
애플리케이션을 시작하는 인증된 클라이언트와 관리되는 이미지를 사용하세요. 요청이 도달하기 전에 그 포트를 게시하세요.
생성 시 재개 구성
샌드박스의 수명 주기 옵션에 자동 재개(auto-resume)를 설정해요. 서비스 기본값을 원하면 값을 생략하고, 비활성화하려면 명시적으로 false를 설정하세요.
예시는 초기 시작을 기다려요. 자동 재개는 삭제된 샌드박스를 복구하지 않고, 애플리케이션 시작 구성을 대체하지도 않아요.
핵심 코드:
const sandbox = await client.create(
{ displayName: name, image, lifecycle: { autoResume } },
{ timeoutMs: 300_000, idempotencyKey: requestId },
);
return sandbox.waitUntilRunning();
완전한 TypeScript 예시: wake/configure.ts
import type { Sandboxes } from '@docker/sandboxes';
export async function createWithAutoResume(
client: Sandboxes,
name: string,
image: string,
autoResume: boolean | undefined,
requestId: string,
) {
const sandbox = await client.create(
{ displayName: name, image, lifecycle: { autoResume } },
{ timeoutMs: 300_000, idempotencyKey: requestId },
);
return sandbox.waitUntilRunning();
}
시행 중인 설정 읽기
샌드박스를 얻고 유효 수명 주기 자동 재개 값을 그 상태와 함께 검사해요. 예시는 이전 응답에는 타임아웃 값으로 대체하고, 두 값이 모두 없으면 오류를 보고해요. 값이 없는 것은 비활성화가 아니라 알 수 없는 것이에요.
이것은 서비스가 기록한 것을 확인하지, 애플리케이션에 요청을 보내거나 애플리케이션이 시작될 수 있음을 증명하지 않아요. 인증은 여전히 필요해요.
전체 흐름을 검증하려면 샌드박스를 중지하고, 게시된 애플리케이션 URL을 요청하고, 애플리케이션이 준비되는지 확인하세요. 시작 시간을 허용하고 애플리케이션 자체 인증을 활성 상태로 두세요.
핵심 코드:
const sandbox = await client.get(name);
const active =
sandbox.effectiveFeatures?.lifecycle?.autoResume ??
sandbox.effectiveFeatures?.timeouts?.autoResume;
if (active == null) {
throw new Error(`sandbox ${name}: auto-resume setting is unknown`);
}
return {
autoResume: active,
status: sandbox.status,
};
완전한 TypeScript 예시: wake/verify.ts
import type { Sandboxes } from '@docker/sandboxes';
export async function autoResumeInForce(client: Sandboxes, name: string) {
const sandbox = await client.get(name);
const active =
sandbox.effectiveFeatures?.lifecycle?.autoResume ??
sandbox.effectiveFeatures?.timeouts?.autoResume;
if (active == null) {
throw new Error(`sandbox ${name}: auto-resume setting is unknown`);
}
return {
autoResume: active,
status: sandbox.status,
};
}