Công Cụ Định Dạng Dockerfile Mới Đáp Ứng Nhu Cầu Định Dạng, Nhưng Có Hạn Chế

BigGo Editorial Team
Công Cụ Định Dạng Dockerfile Mới Đáp Ứng Nhu Cầu Định Dạng, Nhưng Có Hạn Chế

Cộng đồng phát triển container đang thảo luận về một công cụ mới có tên là dockerfmt nhằm chuẩn hóa và cải thiện định dạng Dockerfile. Công cụ này, được xây dựng dựa trên trình phân tích cú pháp nội bộ buildkit, hướng đến việc mang khả năng tự động định dạng cho Dockerfile giống như các nhà phát triển đã quen thuộc trong các ngôn ngữ lập trình khác.

Định Dạng Dockerfile Hiện Đại với Những Hạn Chế

Dockerfmt cung cấp một số tính năng hữu ích cho các nhà phát triển làm việc với định nghĩa container, bao gồm định dạng các bước RUN với mvdan/sh, hỗ trợ heredocs cơ bản và xử lý các chú thích nội tuyến trong các bước chạy. Công cụ này cung cấp các tùy chọn dòng lệnh để kiểm tra định dạng, ghi đầu ra đã định dạng trở lại tệp, kiểm soát thụt lề và đảm bảo các tệp kết thúc bằng dòng mới. Tuy nhiên, các thành viên cộng đồng đã chỉ ra một số hạn chế có thể ảnh hưởng đến việc áp dụng nó. Theo tài liệu, trình phân tích RUN không hỗ trợ nhóm hoặc dấu chấm phẩy trong lệnh, không có ngắt dòng cho các lệnh JSON dài và chỉ thị #escape=X không được hỗ trợ.

Một thành viên cộng đồng đã nhấn mạnh những hạn chế này, lưu ý:

Tôi kiên quyết theo phe RUN set -e ;\ export DEBIAN_FRONTEND=noninteractive ;\ v.v. - vì vậy tôi đoán công cụ này không dành cho tôi

Tính năng chính của dockerfmt

  • Định dạng các bước RUN với mvdan/sh
  • Hỗ trợ cho heredocs cơ bản
  • Hỗ trợ cho inline comments trong các bước run
  • Có sẵn các ràng buộc JS

Hạn chế

  • Trình phân tích RUN không hỗ trợ nhóm lệnh hoặc dấu chấm phẩy trong các lệnh
  • Không có ngắt dòng cho các lệnh JSON dài
  • Không hỗ trợ chỉ thị escape=X

Tùy chọn lệnh

  • -c, --check: Kiểm tra xem các tệp đã được định dạng chưa
  • -w, --write: Ghi đầu ra đã định dạng trở lại vào các tệp
  • -1, --indent uint: Số khoảng trắng cho thụt lề (mặc định là 4)
  • -n, --newline: Kết thúc tệp với dòng mới ở cuối

Hệ Sinh Thái Công Cụ Xây Dựng Container Ngày Càng Phát Triển

Cuộc thảo luận xung quanh dockerfmt đã mở rộng thành một cuộc trò chuyện rộng hơn về hệ sinh thái xây dựng hình ảnh container. Các thành viên cộng đồng tranh luận về ưu điểm của việc tiếp tục sử dụng Dockerfile so với các giải pháp thay thế như Podman, Buildah, buildpacks, Nix, kaniko, ko, bazel và apko. Mỗi giải pháp thay thế đều cung cấp những đánh đổi khác nhau so với Dockerfile truyền thống. Ví dụ, Buildah được nhấn mạnh là cung cấp các công cụ quen thuộc tương tự (RUN, ADD, v.v.) nhưng trong môi trường shell mạnh mẽ hơn, mặc dù phải đánh đổi khả năng tự động lưu trữ layer.

Áp Dụng và Tích Hợp Cộng Đồng

Công cụ này đã nhận được một số sự chú ý trong cộng đồng nhà phát triển. Một người bình luận đã đề cập đến việc tích hợp dockerfmt vào công cụ kiểm tra và định dạng mã phổ quát của họ có tên là Qlty CLI, lưu ý rằng plugin chỉ mất khoảng mười phút để thêm vào. Việc tích hợp nhanh chóng này cho thấy dockerfmt có API đơn giản giúp dễ dàng tiếp cận đối với những người xây dựng công cụ.

Một số người dùng chỉ ra điều trớ trêu là bản thân dự án dockerfmt không bao gồm Dockerfile, khiến các nhà phát triển khó có thể nhanh chóng kiểm tra công cụ trong môi trường container hóa. Người bảo trì dự án đã phản hồi phản hồi này, hứa sẽ sớm phân phối phiên bản Docker của tệp nhị phân.

Khi việc tạo mã tự động thông qua LLMs ngày càng phổ biến, các công cụ như dockerfmt có thể trở nên ngày càng quan trọng để duy trì mã sạch, nhất quán trên các dự án. Việc chuẩn hóa định dạng trên tất cả các ngôn ngữ và tệp cấu hình giúp giữ cho các diff sạch sẽ và làm cho codebase dễ bảo trì hơn, đặc biệt là trong môi trường cộng tác.

Tham khảo: dockerfmt