TL;DR

  • Dofigen은 기본값과 동작을 정의한 YAML·JSON 설명으로 Dockerfile 생성을 간소화하고, BuildKit의 병렬 레이어 빌드 최적화를 활용하는 Dockerfile 생성기임.
  • Docker 이미지, Arch Linux의 AUR, Cargo, Homebrew 또는 릴리스 바이너리로 설치할 수 있음.
  • 기존 Dockerfile은 dofigen parse 명령으로 dofigen.yml 파일로 변환할 수 있음.
  • dofigen gen은 Dockerfile과 .dockerignore 파일을 생성하며, 입력·출력 경로, 오프라인 모드, 잠금 버전, 기본 라벨 관련 옵션을 제공함.
  • 외부 파일 확장·병합과 잠금 파일을 지원하며, dofigen update로 이미지와 리소스 버전을 갱신할 수 있음.

Dofigen

  • Dofigen은 간소화된 YAML 또는 JSON 설명을 사용해 Dockerfile을 생성하는 도구임.
  • 기본값과 동작을 정의해 Dockerfile 작성을 간단하게 함.
  • 기본 Docker 빌드 엔진인 BuildKit의 최적화를 활용해 레이어 빌드를 병렬화하고 Docker 이미지 빌드 속도를 높임.
  • 한 프랑스 DevOps 엔지니어는 이를 두고 “Dofigen은 이 컨테이너 세계에 한 줄기 숨통임”이라고 표현함.

시작하기

사전 요구 사항

  • 다음 방법 중 하나로 Dofigen을 설치할 수 있음.

Docker로 사용하기

  • 다음 명령으로 Docker 이미지에서 Dofigen을 직접 실행할 수 있음.
  • 현재 디렉터리를 /app에 마운트하고 현재 사용자 ID로 실행하며, --help 옵션을 전달하는 방식임: docker run --rm -it -v $(pwd):/app -u $UID lenra/dofigen --help

Arch Linux

  • dofigen은 AUR 패키지로 제공됨.
  • paru와 같은 AUR 도우미로 설치할 수 있음: paru -S dofigen

Cargo

  • 먼저 Rust 패키지 관리자 Cargo를 설치해야 함.
  • 다음 명령으로 dofigen을 설치할 수 있음: cargo install dofigen

Homebrew

  • 다음 명령 중 하나로 Homebrew에서 Dofigen을 설치할 수 있음: brew tap lenra-io/tools 후 brew install dofigen, 또는 brew install lenra-io/tools/dofigen

바이너리 다운로드

  • 릴리스 페이지에서 Dofigen 바이너리를 내려받고, 경로 환경 변수에 추가할 수 있음.

기존 Dockerfile에서 마이그레이션

  • dofigen parse 명령으로 기존 Dockerfile에서 Dofigen 파일을 생성할 수 있음.
  • 이 명령은 현재 디렉터리의 Dockerfile을 읽고 dofigen.yml 파일을 생성함.
  • 추가 옵션은 dofigen parse --help에서 확인할 수 있음.

사용 방법

  • Dockerfile을 생성하려면 dofigen.yml 파일을 만든 뒤 dofigen gen을 실행함.
  • dofigen gen --help는 Dockerfile과 .dockerignore 파일 생성 명령의 옵션을 설명함.
  • -f, --file <FILE>: 입력 Dofigen 파일 지정. 기본 검색 순서는 dofigen.yml, dofigen.yaml, dofigen.json이며, -를 지정하면 표준 입력에서 읽음.
  • --offline: URL에서 데이터를 불러오지 않음. URL을 통한 파일 확장과 이미지 태그 불러오기가 비활성화됨.
  • -o, --output <OUTPUT>: 출력 Dockerfile 지정. -를 지정하면 표준 출력으로 기록하며, 기본값은 Dockerfile임.
  • -l, --locked: Dofigen 정의의 잠금 버전을 사용함.
  • -n, --no-labels: 기본 라벨을 정의하지 않음.
  • -h, --help: 도움말을 출력함.
  • 자세한 도움말은 dofigen --help로 확인할 수 있음.

Dofigen 설명자

  • Dofigen 설명자의 구조는 Dockerfile보다 단순하도록 설계됨.
  • 구조에 관한 자세한 설명은 별도로 제공됨.
  • 예시 구성은 muslrust 빌더에서 clux/muslrust:stable 이미지를 사용하고 작업 디렉터리를 /app으로 설정함.
  • Cargo.toml, Cargo.lock, src/를 바인드하고, musl로 릴리스 빌드를 실행함.
  • 생성된 바이너리를 /tmp/로 옮김. 예시 설명에 따르면 바이너리가 캐시 볼륨 안에 있으면 다른 빌드 단계에서 찾을 수 없기 때문임.
  • Cargo 캐시인 /home/rust/.cargo와 빌드 캐시인 /app/target을 캐시로 지정함.
  • 런타임 단계는 작업 디렉터리를 /app으로 설정하고, 빌더의 /tmp/dofigen을 /bin/으로 복사함.
  • 진입점은 dofigen, 명령 인수는 --help로 설정함.
  • 빌드 컨텍스트에는 /src와 /Cargo.*를 지정함.

외부 파일 확장

  • extend 속성으로 외부 파일을 확장할 수 있음.
  • Dofigen 템플릿은 Dofigen Hub 저장소에서 확인할 수 있음.
  • 예시에서는 https://raw.githubusercontent.com/lenra-io/dofigen/main/dofigen.yml을 확장 대상으로 지정함.
  • 확장한 파일의 구조를 덮어쓰거나 병합할 수 있으며, 예시에서는 확장 설정과 함께 user: 1001을 지정함.

잠금 파일

  • Dofigen은 Dockerfile 생성에 사용된 Dofigen 설명자 버전을 보존하는 잠금 파일을 생성함.
  • 잠금 파일은 불러온 리소스와 이미지 태그도 보존해 동일한 버전으로 Dockerfile을 다시 생성할 수 있게 함.
  • dofigen update 명령으로 이미지와 리소스를 갱신할 수 있음.
  • 동일한 버전으로 Dockerfile을 다시 생성하려면 dofigen gen --locked를 사용함.

기여

  • 개발 환경 설정, 코딩 규칙, PR 절차는 기여 가이드에서 확인할 수 있음.
  • 프로젝트에는 첫 기여에 적합한 이슈가 마련돼 있음.

라이선스

  • MIT 라이선스로 배포됨. 자세한 내용은 LICENSE 파일에 있음.

연락처