콘텐츠로 이동

Devbox - 재현 가능한 개발 환경 치트시트

Devbox - 재현 가능한 개발 환경 치트시트

Devbox (Jetify)는 Docker나 가상 머신 없이 격리되고 재현 가능한 개발 환경을 만듭니다. Nix로 구동되지만 간단한 JSON 구성 (devbox.json)과 친숙한 CLI 뒤에 숨겨집니다 — Nix 유도를 작성하는 대신 devbox add nodejs@20을 실행합니다. 결과: 팀의 모든 사람 (및 CI)이 정확한 버전으로 고정된 동일한 도구 체인을 얻고, 호스트 시스템에서 격리됩니다.

설치

방법명령어
설치 스크립트`curl -fsSL https://get.jetify.com/devbox
요구사항Nix (Devbox이 설치할 수 있음)
확인devbox version

시작

명령어설명
devbox init프로젝트에 devbox.json 생성
devbox add nodejs@20 python@3.12패키지 추가 (고정된 버전)
devbox rm python패키지 제거
devbox installdevbox.json의 모든 항목 설치
devbox shell격리된 환경에 입장
devbox run <script>환경 내 정의된 스크립트 실행

패키지 관리

명령어설명
devbox add go@1.22특정 버전 추가
devbox search postgresqlNix 패키지 카탈로그 검색
devbox list설치된 패키지 나열
devbox update패키지를 허용된 최신으로 업데이트
devbox info nodejs패키지 세부정보 표시

버전은 Nixpkgs 카탈로그에 대해 해석되므로 nodejs@20은 어디서나 재현 가능합니다.

구성 (devbox.json)

{
  "packages": ["nodejs@20", "python@3.12", "postgresql@16"],
  "shell": {
    "init_hook": ["echo 'Welcome to the project env'"],
    "scripts": {
      "dev": "npm run dev",
      "test": "npm test",
      "db": "pg_ctl start"
    }
  }
}
필드목적
packages고정된 도구/언어 버전
shell.init_hook셸에 입장할 때 실행되는 명령어
shell.scripts이름 지정된 명령어 (devbox run dev)
env프로젝트의 환경 변수

셸 및 스크립트

명령어설명
devbox shell대화형 격리 셸
devbox run devdev 스크립트 실행
devbox run -- npm ci환경에서 임의의 명령어 실행
exitDevbox 셸 떠나기

서비스 (프로세스 관리)

Devbox는 프로젝트를 위해 배경 서비스 (데이터베이스 등)를 관리할 수 있습니다.

명령어설명
devbox services ls구성된 서비스 나열
devbox services up서비스 시작
devbox services stop서비스 중지
devbox add postgresql --start-services서비스 지원 패키지 추가

CI 및 컨테이너

사용방식
CIDevbox 설치, devbox run test 실행 — 로컬과 동일한 환경
Dockerdevbox generate dockerfile은 재현 가능한 이미지 생성
DevcontainerVS Code용 devbox generate devcontainer
Direnvcd에서 환경을 자동으로 입장하려면 devbox generate direnv

일반적인 워크플로우

# 처음부터 재현 가능한 프로젝트 환경 구축
devbox init
devbox add nodejs@20 postgresql@16
devbox shell           # 이제 node + postgres가 사용 가능하고 고정됨

# 로컬과 CI에서 동일한 방식으로 작업 실행
devbox run test

# 동일한 정의에서 Docker 이미지 생성
devbox generate dockerfile

Devbox vs 대체

측면DevboxDev ContainersNix (원본)mise
백엔드NixDockerNix자체 레지스트리
구성JSONdevcontainer.jsonNix 언어.mise.toml
격리실제 (Nix 저장소)컨테이너실제도구 버전
학습 곡선부드러움중간급격함부드러움
최적 용도재현 가능한 환경, 쉬움컨테이너 기반 개발전체 Nix 파워버전 관리

기본 파워는 Nix를 참조하고, 컨테이너 기반 개발은 devcontainer를 참조하고, 도구 버전 관리는 mise를 참조하세요.

자료