Dockerfile 포맷터의 주요 기능
- Dockerfiles와 Containerfiles의 들여쓰기, 간격 및 줄 바꿈 정리
- 일관된 백슬래시와 들여쓰기로 다중 라인 RUN 지시문 표준화
- Dockerfile 의미론 존중 – 지시문 재정렬 없음, 셸 로직 변경 없음
- 결정론적 출력: 동일한 입력과 버전 ⇒ 동일한 형식화된 Dockerfile
- dprint를 사용하는 pre-commit 훅, 모노레포 및 CI 작업을 위한 완벽한 동반자
- 구문 강조, diff 친화적 출력 및 복사/다운로드 작업이 있는 웹 기반 편집기
- 다단계 빌드, 빌드 인자 및 일반적인 Node/.NET/Go 이미지와 잘 작동
🛠️ Dockerfile 형식화 방법 for dockerfile-formatter
1. Dockerfile 붙여넣기 또는 업로드
에디터에 Dockerfile을 붙여넣거나 프로젝트에서 Dockerfile/Containerfile을 드롭하세요. 실험만 해보고 싶다면 작은 코드 조각(단일 FROM/RUN 블록 등)도 가능합니다.
2. 포맷터 실행
"포맷"을 클릭하세요. 이 도구는 소스 코드를 안전한 dprint 기반 백엔드로 전송하여 실행 로직을 건드리지 않고 들여쓰기, 간격, 배열 스타일 명령어 및 다중 라인 RUN 체인을 조정합니다.
3. 검토, 복사 또는 다운로드
포맷된 출력을 원본 파일과 비교하세요. 만족스러우면 결과를 저장소에 다시 복사하거나 포맷된 Dockerfile을 다운로드하여 직접 커밋하세요.
기술적 세부사항
지원 파일 형식
이 포맷터는 Docker, Podman 및 유사한 도구에서 사용되는 Docker 빌드 명령어와 호환되는 컨테이너 빌드 파일을 대상으로 합니다.
| 유형 | 예시 | 비고 |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | 이미지용 클래식 Docker 빌드 파일 |
| Containerfile | Containerfile | Podman / Buildah 스타일 구성 파일 |
| 인라인 코드 조각 | FROM node:18-alpine | 빠른 테스트를 위한 작은 조각이나 예제도 지원됨 |
포맷팅 동작 (dprint 스타일)
이 도구에서 사용하는 기본 dprint 플러그인의 상위 수준 동작:
| 영역 | 동작 | 예시 |
|---|---|---|
| 들여쓰기 | RUN 및 기타 명령어에서 연속 라인의 들여쓰기를 정규화 | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| 목록 및 배열 | CMD/ENTRYPOINT/HEALTHCHECK의 JSON 스타일 배열에서 간격 정리 | CMD ["npm", "start"] → CMD ["npm", "start"] (일관된 간격으로) |
| 간격 | 의미를 보존하면서 명령어 주변의 불필요한 공백 제거 | ENV NODE_ENV=production |
| 라인 줄바꿈 | 순서를 변경하지 않고 가독성을 위해 긴 RUN 체인을 재배치할 수 있음 | 긴 셸 파이프라인이 diff에서 더 쉽게 스캔하고 검토할 수 있게 됨 |
| 주석 | 명령어 옆의 전체 줄 및 인라인 주석을 보존합니다 | # 빌드 스테이지용 베이스 이미지\nFROM node:18 AS build |
비목표
이 포맷터는 의도적으로 레이아웃에만 범위를 제한하여 다른 DevOps 도구와 결합하여 사용할 수 있습니다:
| 항목 | 처리됨? | 비고 |
|---|---|---|
| Hadolint 스타일 린팅 | ❌ | 모범 사례 검사 및 경고에는 hadolint나 유사한 도구를 사용하세요 |
| 보안 스캔 | ❌ | 이미지나 레지스트리에 대한 CVE 또는 취약점 스캔을 수행하지 않음 |
| 이미지 빌드 | ❌ | docker build를 실행하거나 Docker Engine과 상호작용하지 않음 |
| 명령어 재정렬 | ❌ | 명령어를 재정렬하지 않음; 들여쓰기와 공백만 변경됨 |
| 베이스 이미지 강화 | ❌ | 베이스 이미지를 추천하지 않음; 제공하는 내용을 포맷팅함 |
CLI 및 CI 동등 기능
결과가 마음에 드시나요? dprint와 보완 도구를 사용하여 로컬 및 CI에서 동일한 동작을 구현하세요.
범용 (dprint)
dprint 초기화 및 Dockerfile 플러그인 추가
dprint init
# dprint.json에서 다음을 추가:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# 그런 다음 Dockerfile 포맷팅:
dprint fmt Dockerfile이 온라인 포맷터와 가장 가까운 일치로, 개발자와 CI가 동일한 스타일을 사용합니다.
Linux/macOS
hadolint로 린팅 (포맷팅을 보완)
hadolint Dockerfile포맷팅(스타일)과 린팅(모범 사례, 더 작은 이미지, 헬스체크)을 결합합니다.
Git / pre-commit
커밋 전 변경된 Dockerfile에 dprint 실행
# .pre-commit-config.yaml (개념적)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"메인에 병합되는 모든 Dockerfile이 이미 포맷팅되어 있음을 보장합니다.
일반적인 사용 사례
개발 및 플랫폼 엔지니어링
- 코드 리뷰 전 마이크로서비스 간 Dockerfile 정규화
- 여러 팀이나 템플릿에서 상속된 레거시 Dockerfile 정리
- 이미지, 기본 OS 버전 또는 빌드 전략 마이그레이션 시 스타일 표준화
# 일반적인 다단계 Dockerfile (깔끔하고 리뷰하기 쉬운)\nFROM node:18 AS build\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci && npm cache clean --force\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine\nWORKDIR /app\nCOPY --from=build /app/dist ./\nCMD ["node", "index.js"]CI/CD 파이프라인
- Dockerfile이 제대로 포맷되지 않을 때 빌드 실패
- pre-commit 훅이나 CI 작업을 통해 기능 브랜치에서 스타일 자동 수정
- 장기 운영 모노레포 및 플랫폼 레포지토리에서 Docker 구성 가독성 유지
# Git pre-commit 훅 예시 (의사 코드)\n#!/bin/sh\nchanged=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)\n[ -z "$changed" ] && exit 0\ndprint fmt $changed\ngit add $changed팀 온보딩 및 일관성
- 새 팀원에게 따라야 할 단일한 의견이 반영된 Dockerfile 스타일 제공
- PR에서 코드 스타일 논의 제거: 포맷터를 진리의 원천으로 삼기
- 동일한 dprint 구성 주변으로 로컬 포맷팅, 레포 훅 및 CI 작업 정렬
# docs/onboarding.md용 예시 스니펫\n1. 로컬에 dprint 설치\n2. 플랫폼 레포에서 공유 dprint.json 복사\n3. 풀 리퀘스트 열기 전 `dprint fmt Dockerfile` 실행❓ Frequently Asked Questions
포맷팅이 이미지 빌드 방식에 영향을 미치나요?
이것은 hadolint로 린팅하는 것과 같은가요?
CI에서 이 스타일을 강제할 수 있나요?
다단계 빌드를 지원하나요?
제 Dockerfile이 서버에 업로드되나요?
Pro Tips
CI에서 자동으로 포맷팅을 실행하여 Dockerfile 스타일이 서비스나 팀 간에 일관되게 유지되도록 하세요.
이 포맷터를 hadolint 같은 린터와 함께 사용하여 레이아웃과 모범 사례 지침을 모두 적용하세요.
프로젝트 초기에 표준 다단계 Dockerfile 템플릿을 합의하고 포맷팅을 유지하여 새로운 서비스가 동일한 구조를 따르도록 하세요.
모노레포에서 작업하는 경우 단일 dprint 구성을 공유하여 애플리케이션 코드, 인프라 코드 및 Dockerfile이 일관된 규칙을 사용하도록 하세요.
Additional Resources
Other Tools
- CSS 정리 도구
- HTML 정리 도구
- 자바스크립트 정리 도구
- PHP 정리 도구
- 색상 선택기
- 스프라이트 추출기
- Base64 디코더
- Base64 인코더
- C# 포맷터
- CSV 포맷터
- Elm 포맷터
- ENV 포맷터
- Go 포맷터
- GraphQL 포맷터
- HCL 포맷터
- INI 포맷터
- JSON 포맷터
- LaTeX 포맷터
- 마크다운 포맷터
- Objective-C 포맷터
- Php Formatter
- 프로토콜 버퍼 포맷터
- Python 포맷터
- Ruby 포맷터
- Rust 포맷터
- Scala 포맷터
- 셸 스크립트 포맷터
- SQL 포맷터
- SVG 포맷터
- Swift 포맷터
- TOML 포맷터
- Typescript Formatter
- XML 포맷터
- YAML 포맷터
- Yarn 포맷터
- CSS 압축기
- Html Minifier
- Javascript Minifier
- JSON 압축기
- XML 최소화 도구
- HTTP 헤더 뷰어
- PDF 텍스트 변환
- 정규식 테스터
- 검색 순위 확인기
- Whois 조회