바이브코딩

dashcloud.json 매니페스트: 지원 범위와 사용법

프로젝트 루트 dashcloud.json으로 name·runtime·entrypoint·env를 자동 적용하는 방법. 현재 지원 필드와 출시 예정 스키마를 구분해 정리했습니다.

업데이트: 2026-10-10

DashCloud는 설정 파일 없이도 배포되는 Zero-Config를 지향합니다. dashcloud.json은 여기에 더해, 프로젝트 루트에 두면 런타임·진입점·환경변수를 자동으로 채워주는 선택적 설정 파일입니다. 없어도 대시보드에서 전부 설정할 수 있습니다.


현재 지원되는 필드 (2026-10 기준)

필드명타입필수 여부동작
namestring선택프로젝트 이름 기본값. CLI 배포 시 --project 생략하면 프로젝트 식별에도 사용됩니다
runtimestring선택런타임 프리셋 (아래 표). 미지정 시 파일 구성으로 자동 감지
entrypointstring선택프로젝트 루트 기준 실행 파일 상대 경로 (예: src/main.py)
envobject선택문자열 키-값 맵. CLI 배포 시 시크릿으로 등록되어 프로세스에 주입됩니다

런타임 프리셋

dashcloud.json 값실제 런타임
python311Python 3.11
python312Python 3.12
crawler-chromiumPlaywright + Chromium (Python)
nodejs20Node.js 20
nodejs22Node.js 22
trading-quant레거시 별칭 — Node.js 20으로 통합됨

실제 예시

하위 디렉터리 진입점 + 환경변수

dashcloud.json
{
  "name": "my-crawler",
  "runtime": "crawler-chromium",
  "entrypoint": "src/crawler_app.py",
  "env": {
    "PYTHONUNBUFFERED": "1",
    "TZ": "Asia/Seoul"
  }
}
PYTHONUNBUFFERED=1 설정

파이썬 스크립트 실행 시 PYTHONUNBUFFERED=1을 지정하거나 python -u 플래그를 주면, print() 출력이 내부 버퍼에 머물지 않고 DashCloud 실시간 웹 콘솔에 즉시 스트리밍됩니다.

프로젝트 이름만 지정

dashcloud.json
{
  "name": "telegram-ticket-bot"
}

적용 방식

  • 대시보드 업로드(폴더/ZIP): 업로드 묶음에서 가장 얕은 경로의 dashcloud.json을 읽어 name·runtime·entrypoint·env를 기본값으로 채웁니다. 업로드 후 화면에서 수정할 수 있습니다.
  • CLI(npx dashcloud deploy): 매니페스트를 읽어 프로젝트의 런타임·진입점과 다르면 갱신하고, env는 시크릿으로 주입합니다. --project를 생략하면 name으로 프로젝트를 찾습니다.
  • 잘못된 파일은 무시: JSON 형식이 깨졌거나 지원 필드가 모두 비어 있으면 매니페스트는 무시되고 기존 프로젝트 설정이 그대로 유지됩니다.

출시 예정 필드 (현재 버전에서는 무시됨)

아래 필드들은 출시 예정 스키마입니다. 현재 버전의 런타임은 이 필드들을 읽지 않습니다. 해당 설정은 지금은 대시보드 프로젝트 설정에서 관리하세요.

필드명계획
buildCommand컨테이너 기동 전 1회 실행할 빌드·패키지 설치 명령
startCommand백그라운드 기동 명령 오버라이드
scheduleCron 스케줄 정의 (현재는 대시보드 스케줄 메뉴 사용 — Free 3개)
resources프로젝트별 CPU·메모리 상한
storage영구 볼륨에 보존할 디렉터리 목록

출시 예정 스키마의 전체 형태는 아래와 같습니다 (현재 버전에서는 무시됨).

dashcloud.json (출시 예정)
{
  "name": "my-trading-engine",
  "runtime": "python312",
  "entrypoint": "src/main.py",
  "buildCommand": "pip install -r requirements.txt",
  "startCommand": "python -u src/main.py",
  "env": {
    "LOG_LEVEL": "INFO",
    "TZ": "Asia/Seoul"
  },
  "schedule": {
    "cron": "0 */4 * * *",
    "timezone": "Asia/Seoul"
  },
  "resources": {
    "memory": "512MB",
    "cpu": "1.0"
  },
  "storage": {
    "persistent": ["data", "logs"]
  }
}

다음 추천 문서