Komunitas pengembang kontainer telah mendiskusikan alat baru bernama dockerfmt yang bertujuan untuk menstandarisasi dan meningkatkan pemformatan Dockerfile. Alat ini, yang dibangun di atas parser buildkit internal, berupaya membawa kemampuan pemformatan otomatis ke Dockerfile seperti yang telah diharapkan pengembang pada bahasa pemrograman lainnya.
Pemformatan Dockerfile Modern dengan Keterbatasan
Dockerfmt menawarkan beberapa fitur berguna bagi pengembang yang bekerja dengan definisi kontainer, termasuk pemformatan langkah RUN dengan mvdan/sh, dukungan untuk heredocs dasar, dan penanganan komentar inline dalam langkah run. Alat ini menyediakan opsi command-line untuk memeriksa pemformatan, menulis output yang diformat kembali ke file, mengontrol indentasi, dan memastikan file diakhiri dengan baris baru. Namun, anggota komunitas telah menunjukkan beberapa keterbatasan yang mungkin memengaruhi adopsinya. Menurut dokumentasi, parser RUN tidak mendukung pengelompokan atau titik koma dalam perintah, tidak ada pembungkusan baris untuk perintah JSON yang panjang, dan direktif #escape=X tidak didukung.
Salah satu anggota komunitas menyoroti keterbatasan ini, mencatat:
Saya sangat mendukung penggunaan RUN set -e ;\ export DEBIAN_FRONTEND=noninteractive ;\ dll dll - jadi sepertinya alat ini bukan untuk saya
Fitur Utama dockerfmt
- Format langkah RUN dengan mvdan/sh
- Dukungan untuk heredocs dasar
- Dukungan untuk komentar inline dalam langkah run
- Tersedia binding JS
Keterbatasan
- Parser RUN tidak mendukung pengelompokan atau titik koma dalam perintah
- Tidak ada pembungkusan baris untuk perintah JSON yang panjang
- Direktif escape=X tidak didukung
Opsi Perintah
-c, --check
: Memeriksa apakah file sudah diformat-w, --write
: Menulis output yang diformat kembali ke file-1, --indent uint
: Jumlah spasi untuk indentasi (default 4)-n, --newline
: Mengakhiri file dengan baris baru
Ekosistem Alat Pembangunan Kontainer yang Berkembang
Diskusi seputar dockerfmt telah berkembang menjadi percakapan yang lebih luas tentang ekosistem pembangunan image kontainer. Anggota komunitas memperdebatkan manfaat terus menggunakan Dockerfile versus alternatif seperti Podman, Buildah, buildpacks, Nix, kaniko, ko, bazel, dan apko. Setiap alternatif menawarkan pertukaran yang berbeda dibandingkan dengan Dockerfile tradisional. Misalnya, Buildah disorot karena menyediakan alat yang sama (RUN, ADD, dll.) tetapi dalam lingkungan shell yang lebih kuat, meskipun dengan mengorbankan caching layer otomatis.
Adopsi dan Integrasi Komunitas
Alat ini telah mendapatkan beberapa daya tarik di komunitas pengembang. Salah satu komentator menyebutkan integrasi dockerfmt ke dalam linter dan pemformat kode universal mereka yang disebut Qlty CLI, mencatat bahwa plugin tersebut hanya membutuhkan waktu sekitar sepuluh menit untuk ditambahkan. Integrasi yang cepat ini menunjukkan bahwa dockerfmt memiliki API yang mudah dipahami yang membuatnya mudah diakses bagi pembuat alat.
Beberapa pengguna menunjukkan ironi bahwa proyek dockerfmt sendiri tidak menyertakan Dockerfile, sehingga sulit bagi pengembang untuk dengan cepat menguji alat tersebut dalam lingkungan terkontainerisasi. Pengelola proyek menanggapi umpan balik ini, berjanji untuk segera mendistribusikan rilis Docker dari binary tersebut.
Karena generasi kode otomatis melalui LLM menjadi semakin umum, alat seperti dockerfmt mungkin menjadi semakin penting untuk mempertahankan kode yang bersih dan konsisten di seluruh proyek. Standardisasi pemformatan di semua bahasa dan file konfigurasi membantu menjaga diff tetap bersih dan membuat basis kode lebih mudah dikelola, terutama dalam lingkungan kolaboratif.
Referensi: dockerfmt