dashcloud.json 매니페스트: 지원 범위와 사용법
업데이트: 2026-10-10
DashCloud는 설정 파일 없이도 배포되는 Zero-Config를 지향합니다. dashcloud.json은 여기에 더해, 프로젝트 루트에 두면 런타임·진입점·환경변수를 자동으로 채워주는 선택적 설정 파일입니다. 없어도 대시보드에서 전부 설정할 수 있습니다.
현재 지원되는 필드 (2026-10 기준)
| 필드명 | 타입 | 필수 여부 | 동작 |
|---|---|---|---|
name | string | 선택 | 프로젝트 이름 기본값. CLI 배포 시 --project 생략하면 프로젝트 식별에도 사용됩니다 |
runtime | string | 선택 | 런타임 프리셋 (아래 표). 미지정 시 파일 구성으로 자동 감지 |
entrypoint | string | 선택 | 프로젝트 루트 기준 실행 파일 상대 경로 (예: src/main.py) |
env | object | 선택 | 문자열 키-값 맵. CLI 배포 시 시크릿으로 등록되어 프로세스에 주입됩니다 |
런타임 프리셋
| dashcloud.json 값 | 실제 런타임 |
|---|---|
python311 | Python 3.11 |
python312 | Python 3.12 |
crawler-chromium | Playwright + Chromium (Python) |
nodejs20 | Node.js 20 |
nodejs22 | Node.js 22 |
trading-quant | 레거시 별칭 — Node.js 20으로 통합됨 |
실제 예시
하위 디렉터리 진입점 + 환경변수
{
"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 실시간 웹 콘솔에 즉시 스트리밍됩니다.
프로젝트 이름만 지정
{
"name": "telegram-ticket-bot"
}적용 방식
- 대시보드 업로드(폴더/ZIP): 업로드 묶음에서 가장 얕은 경로의
dashcloud.json을 읽어name·runtime·entrypoint·env를 기본값으로 채웁니다. 업로드 후 화면에서 수정할 수 있습니다. - CLI(
npx dashcloud deploy): 매니페스트를 읽어 프로젝트의 런타임·진입점과 다르면 갱신하고,env는 시크릿으로 주입합니다.--project를 생략하면name으로 프로젝트를 찾습니다. - 잘못된 파일은 무시: JSON 형식이 깨졌거나 지원 필드가 모두 비어 있으면 매니페스트는 무시되고 기존 프로젝트 설정이 그대로 유지됩니다.
출시 예정 필드 (현재 버전에서는 무시됨)
아래 필드들은 출시 예정 스키마입니다. 현재 버전의 런타임은 이 필드들을 읽지 않습니다. 해당 설정은 지금은 대시보드 프로젝트 설정에서 관리하세요.
| 필드명 | 계획 |
|---|---|
buildCommand | 컨테이너 기동 전 1회 실행할 빌드·패키지 설치 명령 |
startCommand | 백그라운드 기동 명령 오버라이드 |
schedule | Cron 스케줄 정의 (현재는 대시보드 스케줄 메뉴 사용 — Free 3개) |
resources | 프로젝트별 CPU·메모리 상한 |
storage | 영구 볼륨에 보존할 디렉터리 목록 |
출시 예정 스키마의 전체 형태는 아래와 같습니다 (현재 버전에서는 무시됨).
{
"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"]
}
}