Cloudflare Containers: 글로벌 Docker 배포와 wrangler deploy 명령어
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

클라우드플레어 컨테이너: 글로벌 도커 배포로 한 줄 명령어

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 대상: DevOps 엔지니어, 클라우드 개발자
  • 난이도: 중급(도커, 클라우드플레어 워커 및 Durable Object 사용 경험 필요)

핵심 요약

  • Cloudflare Containerswrangler deploy 명령어로 글로벌 배포가 가능하며, 워커와 Durable Object를 통한 컨테이너 인스턴스 관리가 제공됨
  • @cloudflare/containers 패키지의 Container 클래스를 사용하여 Durable Object 템플릿 추상화 가능
  • 비용 모델: 사용 시간 기반 청구(10ms 단위), 자동 스케일링0 인스턴스 대기 상태 지원

섹션별 세부 요약

1. 시스템 구조 및 작동 방식

  • Worker가 프로그래밍 가능한 엔트리포인트로, 요청을 컨테이너 인스턴스로 라우팅
  • Durable Object가 컨테이너 인스턴스의 생명주기 관리 역할 수행
  • Container 클래스를 통해 Durable Object 템플릿을 추상화, wrangler.jsonc에 컨테이너 설정 정의 가능

2. 구현 예제 및 코드 구조

  • wrangler.jsonc 설정 예시:

```json

{

"containers": [{"class_name": "MyContainer", "image": "./Dockerfile", "max_instances": 10}],

"durable_objects": {"bindings": [{"name": "MY_CONTAINER", "class_name": "MyContainer"}]}

}

```

  • Worker 코드에서 Container 클래스 확장:

```typescript

export class MyContainer extends Container {

defaultPort = 8080;

sleepAfter = "10s";

envVars = { MESSAGE: "Hello from my Worker!" };

override onStart() { console.log("Container started"); }

}

```

  • 라우팅 로직:

- /sandbox/ 경로: 유니크 ID 기반의 상태 유지 컨테이너 인스턴스 라우팅

- /api/ 경로: 랜덤 로드 밸런서를 통한 무상태 컨테이너 풀 사용

3. 배포 프로세스 및 요구 사항

  • 필수 조건: 로컬에 Docker 설치 및 실행(docker info로 확인)
  • 배포 명령어:

```bash

npm create cloudflare@latest -- --template=cloudflare/templates/containers-template

wrangler deploy

```

  • 배포 단계:
  1. 로컬 Docker 데몬을 사용한 컨테이너 이미지 빌드
  2. 자동 구성된 Cloudflare Container Registry에 이미지 푸시
  3. 워커 배포 및 글로벌 인스턴스 생성

4. 인스턴스 타입 및 청구 요금

  • 인스턴스 타입:

| 타입 | 메모리 | CPU | 디스크 |

|----------|--------|-----------|--------|

| dev | 256 MiB | 1/16 vCPU | 2 GB |

| basic | 1 GiB | 1/4 vCPU | 4 GB |

| standard | 4 GiB | 1/2 vCPU | 4 GB |

  • 청구 요금:

- 메모리: $0.0000025 per GiB-초

- CPU: $0.000020 per vCPU-초

- 디스크: $0.00000007 per GB-초

- 데이터 이gress: 지역별 차등 요금 적용(예: 미국/유럽 $0.025/GB, 1TB 무료 제공)

5. 향후 기능 및 확장성

  • 글로벌 자동 스케일링: autoscale = true 설정으로 지연 시간 기반 자동 확장
  • 심층 통합: R2 버킷, Hyperdrive, KV 등 직접 액세스 API 지원 예정
  • 강화된 커뮤니케이션: 워커에서 컨테이너 내 exec 명령어 실행 및 양방향 요청 처리 가능

결론

  • Cloudflare Containerswrangler deploy단일 명령어로 글로벌 배포 가능하며, 사용 시간 기반 청구로 비용 효율성 확보
  • Durable Object와의 통합을 통해 상태 유지/무상태 서비스 동시 지원, 자동 스케일링0 인스턴스 대기 기능으로 확장성 극대화
  • 향후 기능으로는 자동 스케일링, R2/Hyperdrive 통합, 양방향 커뮤니케이션 기능 추가 예정