피드로 돌아가기
Building a Universal Container System (So I Never Have to Write Another Dockerfile)
Dev.toDev.to
DevOps

Build-arg 기반 모듈형 Dockerfile로 프로젝트 설정 시간 2일에서 10분으로 단축

Building a Universal Container System (So I Never Have to Write Another Dockerfile)

Joshua Hall2026년 6월 13일32intermediate

Context

다수 프로젝트에서 유사한 Dockerfile을 반복 작성함에 따른 유지보수 효율 저하 발생. 개별 리포지토리마다 파편화된 런타임 버전과 툴체인으로 인한 환경 불일치 및 업데이트 관리 비용 증가.

Technical Solution

  • Debian Slim 기반의 단일 Modular Dockerfile 설계로 중복 설정 제거
  • Build-arg를 통한 Feature Toggle 방식으로 필요한 런타임(Python, Node, Go 등)과 툴체인 선택적 구성
  • Git Submodule 형태로 시스템을 배포하여 중앙 집중식 관리와 프로젝트별 커스텀 설정의 유연성 동시 확보
  • CI 기반의 주 단위 자동 버전 업데이트 및 테스트 파이프라인 구축을 통한 무중단 패치 체계 구현
  • 동일 Dockerfile 내 빌드 인자 차별화로 Dev/Prod 환경의 Parity 보장 및 설정 드리프트 방지

Impact

  • 초기 프로젝트 인프라 설정 시간: 2~3일 → 10분으로 단축
  • 관리 대상: 28개 기능 모듈 및 100개 이상의 도구 통합 관리

Key Takeaway

반복되는 인프라 설정의 추상화 계층을 구축하여 선언적 구성(Declarative Configuration) 방식으로 전환함으로써 운영 오버헤드를 제거하고 표준화된 환경을 강제하는 설계 전략


- 반복되는 Dockerfile 패턴의 공통 분모를 추출하여 모듈화 가능한지 검토 - 환경 변수나 Build-arg를 활용한 Feature-based Image 빌드 전략 도입 고려 - 인프라 설정의 중앙 관리를 위한 Git Submodule 또는 전용 Base Image 저장소 운영 검토 - CI를 통한 베이스 이미지의 자동 업데이트 및 회귀 테스트 자동화 체계 구축

원문 읽기