중지된 샌드박스 주문형 재개하기

중지된 샌드박스 주문형 재개하기

게시된 애플리케이션에 대한 요청이 중지된 샌드박스를 시작하게 해 봐요. 이것은 사용 사이에 활성 상태를 유지하지 않고도 주문형으로 사용 가능해야 하는 애플리케이션에 적합해요.

출처: 문서

본문

애플리케이션을 시작하는 인증된 클라이언트와 관리되는 이미지를 사용하세요. 요청이 도달하기 전에 그 포트를 게시하세요.

생성 시 재개 구성

샌드박스의 수명 주기 옵션에 자동 재개(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,
  };
}

더 알아보기 (Learn more)