피드로 돌아가기
Setting Up Docker CI for Rust with cargo-dist
Dev.toDev.to
DevOps

cargo-dist 기반 Artifact 분리로 Rust multi-arch 빌드 속도 최적화

Setting Up Docker CI for Rust with cargo-dist

Wayne2026년 4월 26일3intermediate

Context

Docker 내 Rust 컴파일 시 발생하는 느린 빌드 속도와 QEMU 기반 arm64 에뮬레이션으로 인한 심각한 성능 저하 발생. Multi-stage Build 방식의 한계로 인해 CI 파이프라인 전체의 리드 타임이 증가하는 구조적 병목 지점 확인.

Technical Solution

  • cargo-dist를 통한 컴파일 단계의 분리로 Docker 외부에서 Binary 생성 및 GitHub Actions Artifact 저장
  • Docker Job을 단순 파일 복사 및 패키징 단계로 축소하여 QEMU 에뮬레이션 부하를 최소화한 설계
  • dist-workspace.toml의 post-announce-jobs 설정을 통한 Release Workflow와 Docker Publish Job의 유기적 연동
  • ldd 분석을 통한 필수 Shared Library 식별 및 gcr.io/distroless/cc-debian13:nonroot 기반의 최적화된 Runtime Image 채택
  • build-push-action@v6를 활용한 Multi-arch Manifest 생성 및 GHCR 자동 배포 프로세스 구축

- CI 내 에뮬레이션 기반 빌드 시 컴파일과 패키징 단계를 분리하여 리소스 낭비 최소화 - Distroless 이미지 채택 전 ldd 명령어로 실제 필요한 Runtime Dependency를 정밀 분석하여 이미지 경량화 - Release Tooling(cargo-dist)의 Plan 데이터를 Docker Meta-data와 동기화하여 버전 일관성 확보

원문 읽기