Fitur Utama Pemformat Dockerfile
- Membersihkan indentasi, spasi, dan pembungkusan baris untuk Dockerfile dan Containerfile
- Menormalkan instruksi RUN multi-baris dengan garis miring terbalik dan indentasi yang konsisten
- Menghormati semantik Dockerfile – tidak ada pengurutan ulang instruksi, tidak ada perubahan logika shell
- Keluaran deterministik: input dan versi yang sama ⇒ Dockerfile terformat yang sama
- Pendamping sempurna untuk pre-commit hooks, monorepo, dan pekerjaan CI menggunakan dprint
- Editor berbasis web dengan penyorotan sintaks, keluaran ramah-diff, dan aksi salin/unduh
- Bekerja baik dengan build multi-tahap, argumen build, dan gambar Node/.NET/Go tipikal
🛠️ Cara Memformat Dockerfile for dockerfile-formatter
1. Tempel atau Unggah Dockerfile Anda
Tempelkan Dockerfile Anda ke editor atau jatuhkan Dockerfile/Containerfile dari proyek Anda. Cuplikan kecil (seperti blok FROM/RUN tunggal) juga berfungsi jika Anda hanya ingin bereksperimen.
2. Jalankan Pemformat
Klik "Format". Alat ini mengirimkan sumber Anda ke backend aman berbasis dprint yang menyesuaikan indentasi, spasi, instruksi gaya array, dan rantai RUN multi-baris tanpa menyentuh logika eksekusi.
3. Tinjau, Salin, atau Unduh
Bandingkan keluaran yang diformat dengan file asli Anda. Saat Anda puas, salin hasilnya kembali ke repo Anda atau unduh Dockerfile yang diformat untuk langsung di-commit.
Detail Teknis
Jenis File yang Didukung
Pemformat ini menargetkan instruksi build Docker dan file build kontainer yang kompatibel digunakan di Docker, Podman, dan alat serupa.
| Jenis | Contoh | Catatan |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | File build Docker klasik untuk image |
| Containerfile | Containerfile | File konfigurasi gaya Podman / Buildah |
| Cuplikan inline | FROM node:18-alpine | Fragmen kecil atau contoh juga didukung untuk tes cepat |
Perilaku Pemformatan (Gaya dprint)
Perilaku tingkat tinggi dari plugin dprint yang mendasari yang digunakan oleh alat ini:
| Area | Perilaku | Contoh |
|---|---|---|
| Indentasi | Menormalisasi indentasi untuk baris lanjutan dalam RUN dan instruksi lainnya | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Daftar & array | Membersihkan spasi dalam array gaya JSON untuk CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (tetapi dengan spasi yang konsisten) |
| Spasi | Menghapus spasi berlebihan di sekitar instruksi sambil mempertahankan makna | ENV NODE_ENV=production |
| Pembungkusan baris | Dapat mengalir ulang rantai RUN panjang untuk keterbacaan tanpa mengubah urutan | Pipa shell panjang menjadi lebih mudah dipindai dan ditinjau dalam diff |
| Komentar | Mempertahankan komentar baris penuh dan sebaris di samping instruksi | # base image for build stage\nFROM node:18 AS build |
Bukan Tujuan
Formatter ini sengaja dibatasi pada tata letak, sehingga Anda dapat menggabungkannya dengan alat DevOps lainnya:
| Item | Ditangani? | Catatan |
|---|---|---|
| Linting gaya Hadolint | ❌ | Gunakan hadolint atau alat serupa untuk pemeriksaan dan peringatan praktik terbaik |
| Pemindaian keamanan | ❌ | Tidak ada pemindaian CVE atau kerentanan pada gambar atau registry |
| Pembuatan gambar | ❌ | Tidak menjalankan docker build atau berinteraksi dengan Docker Engine |
| Pengurutan ulang instruksi | ❌ | Tidak pernah mengurutkan ulang instruksi; hanya perubahan indentasi dan spasi |
| Pengerasan gambar dasar | ❌ | Tidak merekomendasikan gambar dasar; ini memformat apa pun yang Anda berikan |
CLI & Setara CI
Suka hasilnya? Cerminkan perilaku yang sama secara lokal dan di CI dengan dprint dan alat pelengkap.
Universal (dprint)
Inisialisasi dprint dan tambahkan plugin Dockerfile
dprint init
# Di dprint.json, tambahkan:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Kemudian format Dockerfile Anda:
dprint fmt DockerfilePaling cocok dengan formatter online ini, sehingga pengembang dan CI menggunakan gaya yang sama.
Linux/macOS
Lint dengan hadolint (melengkapi pemformatan)
hadolint DockerfileGabungkan pemformatan (gaya) dengan linting (praktik terbaik, gambar lebih kecil, healthchecks).
Git / pre-commit
Jalankan dprint pada Dockerfile yang diubah sebelum commit
# .pre-commit-config.yaml (konseptual)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Menjamin setiap Dockerfile yang digabungkan ke main sudah diformat.
Kasus Penggunaan Umum
Rekayasa Dev & Platform
- Normalisasikan Dockerfile di seluruh layanan mikro sebelum tinjauan kode
- Bersihkan Dockerfile warisan yang diwarisi dari berbagai tim atau templat
- Standarisasi gaya saat memigrasikan gambar, versi OS dasar atau strategi pembuatan
# Dockerfile multi-tahap khas (bersih, ramah tinjauan)\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"]Pipelines CI/CD
- Gagalkan pembuatan ketika Dockerfile tidak diformat dengan benar
- Perbaiki gaya secara otomatis di cabang fitur melalui kait pra-komit atau pekerjaan CI
- Pertahankan konfigurasi Docker tetap terbaca di repositori monorepo dan platform yang berumur panjang
# Contoh kait pra-komit Git (kode semu)\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 $changedOnboarding Tim & Konsistensi
- Berikan anggota tim baru satu gaya Dockerfile yang terarah untuk diikuti
- Hilangkan debat gaya kode dari PR: biarkan formatter menjadi sumber kebenaran
- Sejajarkan pemformatan lokal, kait repositori, dan pekerjaan CI di sekitar konfigurasi dprint yang sama
# Contoh cuplikan untuk docs/onboarding.md\n1. Instal dprint secara lokal\n2. Salin dprint.json bersama dari repositori platform\n3. Jalankan `dprint fmt Dockerfile` sebelum membuka permintaan tarik❓ Frequently Asked Questions
Apakah pemformatan mengubah cara gambar saya dibuat?
Apakah ini sama seperti pelintingan dengan hadolint?
Bisakah saya menegakkan gaya ini di CI?
Apakah mendukung pembuatan multi-tahap?
Apakah Dockerfile saya diunggah ke server?
Pro Tips
Jalankan pemformatan secara otomatis di CI agar gaya Dockerfile tidak pernah menyimpang antar layanan atau tim.
Pasangkan pemformat ini dengan pemeriksa seperti hadolint untuk mencakup tata letak dan panduan praktik terbaik.
Setujui templat Dockerfile multi-tahap standar sejak awal proyek dan pertahankan formatnya agar layanan baru mengikuti struktur yang sama.
Jika Anda bekerja di monorepo, bagikan satu konfigurasi dprint agar kode aplikasi, kode infrastruktur, dan Dockerfile menggunakan konvensi yang konsisten.
Additional Resources
Other Tools
- Pemerindah CSS
- Pemerindah HTML
- Pemerindah Javascript
- Pemerindah PHP
- Pemilih Warna
- Ekstraktor Sprite
- Dekoder Base64
- Encoder Base64
- Pemformat Csharp
- Pemformat CSV
- Pemformat Elm
- Pemformat ENV
- Pemformat Go
- Pemformat GraphQL
- Pemformat HCL
- Pemformat INI
- Pemformat JSON
- Pemformat Latex
- Pemformat Markdown
- Pemformat ObjectiveC
- Php Formatter
- Pemformat Proto
- Pemformat Python
- Pemformat Ruby
- Pemformat Rust
- Pemformat Scala
- Pemformat Skrip Shell
- Pemformat SQL
- Pemformat SVG
- Pemformat Swift
- Pemformat TOML
- Typescript Formatter
- Pemformat XML
- Pemformat YAML
- Pemformat Yarn
- Pengecil CSS
- Html Minifier
- Javascript Minifier
- Pengecil JSON
- Pengecil XML
- Penampil Header HTTP
- PDF Ke Teks
- Penguji Regex
- Pemeriksa Peringkat SERP
- Pencarian Whois