Tính Năng Chính của Công Cụ Định Dạng Dockerfile
- Làm sạch thụt lề, khoảng cách và ngắt dòng cho Dockerfiles và Containerfiles
- Chuẩn hóa các lệnh RUN đa dòng với dấu gạch chéo ngược và thụt lề nhất quán
- Tôn trọng ngữ nghĩa Dockerfile – không sắp xếp lại chỉ dẫn, không thay đổi logic shell
- Đầu ra xác định: cùng đầu vào và phiên bản ⇒ cùng Dockerfile đã định dạng
- Người bạn đồng hành hoàn hảo cho hook pre-commit, monorepo và công việc CI sử dụng dprint
- Trình soạn thảo dựa trên web với tô sáng cú pháp, đầu ra thân thiện diff và hành động sao chép/tải xuống
- Hoạt động tốt với bản dựng đa giai đoạn, đối số build và hình ảnh Node/.NET/Go điển hình
🛠️ Cách Định Dạng Dockerfile for dockerfile-formatter
1. Dán hoặc Tải Lên Dockerfile Của Bạn
Dán Dockerfile của bạn vào trình soạn thảo hoặc thả một Dockerfile/Containerfile từ dự án của bạn. Các đoạn mã nhỏ (như một khối FROM/RUN đơn lẻ) cũng hoạt động nếu bạn chỉ muốn thử nghiệm.
2. Chạy Công cụ Định dạng
Nhấp "Định dạng". Công cụ gửi mã nguồn của bạn đến một backend an toàn dựa trên dprint để điều chỉnh thụt lề, khoảng cách, hướng dẫn kiểu mảng và chuỗi RUN đa dòng mà không làm thay đổi logic thực thi.
3. Xem lại, Sao chép hoặc Tải xuống
So sánh kết quả đã định dạng với tập tin gốc của bạn. Khi hài lòng, sao chép kết quả trở lại kho lưu trữ của bạn hoặc tải xuống Dockerfile đã định dạng để commit trực tiếp.
Chi tiết Kỹ thuật
Loại Tập tin Hỗ trợ
Công cụ định dạng nhắm đến các hướng dẫn xây dựng Docker và các tập tin xây dựng container tương thích được sử dụng trong Docker, Podman và các công cụ tương tự.
| Loại | Ví dụ | Ghi chú |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | Tập tin xây dựng Docker cổ điển cho images |
| Containerfile | Containerfile | Tập tin cấu hình kiểu Podman / Buildah |
| Đoạn mã nội tuyến | FROM node:18-alpine | Các đoạn mã nhỏ hoặc ví dụ cũng được hỗ trợ để thử nghiệm nhanh |
Hành vi Định dạng (Kiểu dprint)
Các hành vi cấp cao của plugin dprint cơ bản được sử dụng bởi công cụ này:
| Lĩnh vực | Hành vi | Ví dụ |
|---|---|---|
| Thụt lề | Chuẩn hóa thụt lề cho các dòng tiếp tục trong RUN và các hướng dẫn khác | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Danh sách & mảng | Làm sạch khoảng cách trong các mảng kiểu JSON cho CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (nhưng với khoảng cách nhất quán) |
| Khoảng cách | Loại bỏ khoảng trắng dư thừa xung quanh các hướng dẫn trong khi vẫn giữ nguyên ý nghĩa | ENV NODE_ENV=production |
| Ngắt dòng | Có thể tái dòng các chuỗi RUN dài để dễ đọc mà không thay đổi thứ tự | Các đường ống shell dài trở nên dễ quét và xem lại trong các diff |
| Ghi chú | Bảo toàn ghi chú toàn dòng và nội tuyến bên cạnh các chỉ dẫn | # base image for build stage\nFROM node:18 AS build |
Mục tiêu không bao gồm
Trình định dạng này được giới hạn cố ý về bố cục, để bạn có thể kết hợp nó với các công cụ DevOps khác:
| Mục | Được xử lý? | Ghi chú |
|---|---|---|
| Kiểm tra lỗi kiểu Hadolint | ❌ | Sử dụng hadolint hoặc các công cụ tương tự để kiểm tra và cảnh báo thực hành tốt nhất |
| Quét bảo mật | ❌ | Không quét CVE hoặc lỗ hổng bảo mật trên hình ảnh hoặc registry |
| Xây dựng hình ảnh | ❌ | Không thực thi docker build hoặc tương tác với Docker Engine |
| Sắp xếp lại chỉ dẫn | ❌ | Không bao giờ sắp xếp lại chỉ dẫn; chỉ thay đổi thụt lề và khoảng trắng |
| Củng cố hình ảnh cơ sở | ❌ | Không đề xuất hình ảnh cơ sở; nó định dạng bất cứ thứ gì bạn cung cấp |
Tương đương CLI & CI
Thích kết quả? Sao chép hành vi tương tự cục bộ và trong CI với dprint và các công cụ bổ sung.
Phổ quát (dprint)
Khởi tạo dprint và thêm plugin Dockerfile
dprint init
# Trong dprint.json, thêm:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Sau đó định dạng Dockerfiles của bạn:
dprint fmt DockerfileKhớp gần nhất với trình định dạng trực tuyến này, để nhà phát triển và CI sử dụng cùng phong cách.
Linux/macOS
Kiểm tra lỗi với hadolint (bổ sung cho định dạng)
hadolint DockerfileKết hợp định dạng (kiểu dáng) với kiểm tra lỗi (thực hành tốt nhất, hình ảnh nhỏ hơn, kiểm tra sức khỏe).
Git / pre-commit
Chạy dprint trên Dockerfiles đã thay đổi trước khi commit
# .pre-commit-config.yaml (khái niệm)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Đảm bảo mọi Dockerfile hợp nhất vào main đã được định dạng sẵn.
Các Trường Hợp Sử Dụng Phổ Biến
Kỹ Thuật Phát Triển & Nền Tảng
- Chuẩn hóa Dockerfiles trên các microservice trước khi xem xét mã
- Dọn dẹp các Dockerfiles kế thừa từ nhiều nhóm hoặc mẫu cũ
- Chuẩn hóa phong cách khi di chuyển hình ảnh, phiên bản hệ điều hành cơ sở hoặc chiến lược xây dựng
# Dockerfile đa giai đoạn điển hình (sạch sẽ, thân thiện với đánh giá)
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci && npm cache clean --force
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./
CMD ["node", "index.js"]Quy trình CI/CD
- Đánh dấu bản dựng thất bại khi Dockerfiles không được định dạng đúng cách
- Tự động sửa phong cách trên các nhánh tính năng thông qua hook pre-commit hoặc công việc CI
- Giữ cấu hình Docker dễ đọc trong các kho mono và kho nền tảng tồn tại lâu
# Ví dụ hook pre-commit Git (mã giả)
#!/bin/sh
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)
[ -z "$changed" ] && exit 0
dprint fmt $changed
git add $changedHòa nhập nhóm & Tính nhất quán
- Cung cấp cho thành viên mới một phong cách Dockerfile duy nhất và rõ ràng để tuân theo
- Loại bỏ tranh luận về phong cách mã khỏi PR: để trình định dạng là nguồn chân lý
- Căn chỉnh định dạng cục bộ, hook kho và công việc CI xung quanh cùng cấu hình dprint
# Đoạn mã ví dụ cho docs/onboarding.md
1. Cài đặt dprint cục bộ
2. Sao chép dprint.json chia sẻ từ kho nền tảng
3. Chạy `dprint fmt Dockerfile` trước khi mở pull request❓ Frequently Asked Questions
Định dạng có thay đổi cách hình ảnh của tôi được xây dựng không?
Đây có giống như kiểm tra lỗi với hadolint không?
Tôi có thể áp dụng phong cách này trong CI không?
Nó có hỗ trợ bản dựng đa giai đoạn không?
Dockerfile của tôi có được tải lên máy chủ không?
Pro Tips
Chạy định dạng tự động trong CI để phong cách Dockerfile không bao giờ bị sai lệch giữa các dịch vụ hoặc nhóm.
Kết hợp công cụ định dạng này với một công cụ kiểm tra lỗi như hadolint để bao quát cả bố cục và hướng dẫn thực hành tốt nhất.
Thống nhất về một mẫu Dockerfile đa giai đoạn chuẩn sớm trong dự án và giữ nó được định dạng để các dịch vụ mới tuân theo cùng cấu trúc.
Nếu bạn làm việc trong một kho lưu trữ đơn, hãy chia sẻ một cấu hình dprint duy nhất để mã ứng dụng, mã hạ tầng và Dockerfile sử dụng các quy ước nhất quán.
Additional Resources
Other Tools
- Bộ Làm Đẹp CSS
- Bộ Làm Đẹp HTML
- Bộ Làm Đẹp Javascript
- Bộ Làm Đẹp PHP
- Bộ Chọn Màu
- Bộ Trích Xuất Sprite
- Bộ Giải Mã Base64
- Bộ Mã Hóa Base64
- Bộ Định Dạng Csharp
- Bộ Định Dạng CSV
- Bộ Định Dạng Elm
- Bộ Định Dạng ENV
- Bộ Định Dạng Go
- Bộ Định Dạng GraphQL
- Bộ Định Dạng HCL
- Bộ Định Dạng INI
- Bộ Định Dạng JSON
- Bộ Định Dạng Latex
- Bộ Định Dạng Markdown
- Bộ Định Dạng ObjectiveC
- Php Formatter
- Bộ Định Dạng Proto
- Bộ Định Dạng Python
- Bộ Định Dạng Ruby
- Bộ Định Dạng Rust
- Bộ Định Dạng Scala
- Bộ Định Dạng Tập Lệnh Shell
- Bộ Định Dạng SQL
- Trình Định Dạng SVG
- Trình Định Dạng Swift
- Trình Định Dạng TOML
- Typescript Formatter
- Trình Định Dạng XML
- Trình Định Dạng YAML
- Trình Định Dạng Yarn
- Bộ Thu Nhỏ CSS
- Html Minifier
- Javascript Minifier
- Bộ Thu Nhỏ JSON
- Trình Thu Nhỏ XML
- Trình Xem Tiêu Đề HTTP
- PDF Sang Văn Bản
- Bộ Kiểm Tra Regex
- Bộ Kiểm Tra Xếp Hạng SERP
- Tra Cứu Whois