Công cụ dành cho nhà phát triển · Chạy Docker sang trình chuyển đổi soạn thảo Docker
YAML vấn đề cần lưu ý trong tệp Soạn thư: trích dẫn, vấn đề ở Na Uy và 22:22
· Lý lịch
docker soạn yaml
Các tệp soạn thảo là YAML và YAML có ý kiến về giá trị trần. Bài đăng này giải thích các quy tắc phân tích cú pháp đằng sau những điều bất ngờ thường gặp nhất và cách kiểm tra bất kỳ YAML nào được tạo hoặc viết tay cho chúng.
COUNTRY=NO trở thành sai — một tệp Soạn thảo đã chuyển một boolean trong đó ứng dụng muốn có mã gồm hai ký tự
COUNTRY=NO trở thành sai — một tệp Soạn đã chuyển một boolean trong đó ứng dụng muốn có mã gồm hai chữ cái. Bằng chứng: một giá trị giống NO có thể được các trình phân tích cú pháp gõ lại. Tái tạo sự an toàn vô hướng yaml bằng các hằng dùng một lần. Ghép nối từng lần xuất hiện nguồn với các chuỗi bản đồ giá trị được trích dẫn; dự trữ gõ trình phân tích cú pháp để xem xét đích.
Sự cố yaml cũng tiết lộ rằng Một ranh giới sự cố yaml riêng biệt là các chuỗi số thập lục phân và hình ngày tháng trông như bát phân được trích dẫn. Bằng chứng: các chuỗi số thập lục phân và hình ngày tháng trông như bát phân được trích dẫn. Ràng buộc an toàn vô hướng yaml này là một điểm dừng. Kiểm tra các chuỗi bản đồ giá trị được trích dẫn mà không có hành vi sản xuất, sau đó ghi lại quá trình kiểm tra máy chủ để nhập trình phân tích cú pháp.
YAML 1.1 vô hướng - làm thế nào không được trích dẫn có, không, bật, tắt và KHÔNG trở thành boolean trong nhiều trình phân tích cú pháp
YAML 1.1 vô hướng - làm thế nào không được trích dẫn có, không, bật, tắt và KHÔNG trở thành boolean trong nhiều trình phân tích cú pháp. Bằng chứng: dành riêng có không về cách viết boolean và null được trích dẫn. Theo dõi các mã thông báo an toàn vô hướng yaml thành các chuỗi bản đồ giá trị được trích dẫn. Tách các giá trị được sắp xếp khỏi các trường giá trị cuối cùng; việc gõ trình phân tích cú pháp nằm ngoài bộ sưu tập.
Một ranh giới cơ chế yaml liên quan là ranh giới ngữ pháp yaml riêng biệt là bản đồ sử dụng hai khoảng trắng và mảng sử dụng các mục gạch ngang. Bằng chứng: bản đồ sử dụng hai khoảng trắng và mảng sử dụng các mục gạch ngang. Sử dụng thực tế an toàn vô hướng yaml này để dự đoán một thành viên hoặc đại lượng vô hướng trong chuỗi bản đồ giá trị được trích dẫn. Kiểm tra các cảnh báo trước khi quyết định bất cứ điều gì về việc gõ trình phân tích cú pháp.
Cổng thập lục phân — tại sao 22:22 không được trích dẫn có thể phân tích cú pháp dưới dạng số nguyên 1342 và tại sao tài liệu Compose lại yêu cầu trích dẫn cổng
Cổng thập lục phân — tại sao 22:22 không được trích dẫn có thể phân tích cú pháp dưới dạng số nguyên 1342 và tại sao tài liệu Compose lại yêu cầu trích dẫn cổng. Bằng chứng: chuỗi cổng dấu hai chấm số nhận được dấu ngoặc đơn. Đánh giá việc tuần tự hóa an toàn vô hướng yaml từ mô hình của nó. Trích dẫn trong các chuỗi bản đồ giá trị được trích dẫn sẽ bảo vệ các loại nhưng không đưa ra bằng chứng hoạt động nào cho việc gõ trình phân tích cú pháp.
Quan sát tuần tự hóa yaml thứ hai là Một ranh giới đầu ra yaml riêng biệt là các ví dụ quoteYamlString trực tiếp tiết lộ quyết định của người viết. Bằng chứng: trích dẫn trực tiếp Các ví dụ về YamlString tiết lộ quyết định của người viết. Đầu ra an toàn vô hướng yaml này tách cài đặt khỏi ngữ cảnh không có sẵn. Giữ các chuỗi bản đồ giá trị được trích dẫn có thể xem lại được và kiểm tra việc gõ trình phân tích cú pháp một cách độc lập.
Các số 0 và bát phân đứng đầu — các giá trị như 0755 và các chuỗi phiên bản YAML diễn giải lại
Các số 0 và bát phân đứng đầu — các giá trị như 0755 và các chuỗi phiên bản YAML diễn giải lại. Hãy dừng lại ở ngoại lệ an toàn vô hướng yaml thay vì đoán. Bất kỳ sự bổ sung nào gần các chuỗi bản đồ giá trị được trích dẫn đều cần có lý do dành riêng cho việc triển khai gắn liền với việc nhập trình phân tích cú pháp.
Một hạn chế ngoại lệ yaml khác là ranh giới ngoại lệ yaml riêng biệt là các phần mở rộng neo và phân tích cú pháp chung YAML nằm ngoài bộ tuần tự hóa này. Bằng chứng: tiện ích mở rộng neo và phân tích cú pháp chung YAML nằm ngoài bộ nối tiếp này. Giữ lệnh an toàn vô hướng yaml ban đầu bên cạnh các cảnh báo. Sự so sánh cho thấy các chuỗi bản đồ giá trị được trích dẫn chứa gì và quyết định gõ trình phân tích cú pháp nào vẫn thủ công.
Thụt lề và danh sách - quy ước hai dấu cách, liệt kê các mục theo một khóa và các dạng môi trường bản đồ so với danh sách:
Thụt lề và danh sách - quy ước hai dấu cách, liệt kê các mục theo một khóa và các dạng môi trường bản đồ so với danh sách:. Xây dựng ví dụ về an toàn vô hướng yaml từ các tên tổng hợp. Làm cho mọi mục trong bản đồ các giá trị được trích dẫn có thể theo dõi được mà không để lộ chi tiết nhập của trình phân tích cú pháp sản xuất.
Mẫu ví dụ yaml tương tự chứng minh rằng ranh giới của ví dụ yaml riêng biệt là trích dẫn phòng thủ chỉ bảo vệ tập hợp con được phát ra. Bằng chứng: trích dẫn phòng thủ chỉ bảo vệ tập hợp con được phát ra. Thực tế an toàn vô hướng yaml được ghép nối sẽ hiển thị trong chuỗi bản đồ giá trị được trích dẫn. Ghi lại dòng đó và tránh các giả định về việc gõ trình phân tích cú pháp.
Ví dụ hoạt động: sửa một tệp bị hỏng bằng tay - chạy docker soạn cấu hình để xem trình phân tích cú pháp thực sự tạo ra những gì
Ví dụ đã hoạt động: sửa một tệp bị hỏng bằng tay - chạy docker soạn cấu hình để xem trình phân tích cú pháp thực sự tạo ra những gì. Chuyển hệ quả an toàn vô hướng yaml thành một giá trị được trích dẫn có thể quan sát được của sự khác biệt về trình tự bản đồ. Docker sở hữu phán quyết gõ trình phân tích cú pháp sau này.
Việc triển khai hậu quả yaml cũng cho thấy một ranh giới riêng biệt của hiệu ứng yaml là giá trị trần giống như NO có thể được các trình phân tích cú pháp gõ lại. Phân chia các trách nhiệm về an toàn vô hướng yaml: chuyển đổi ghi các chuỗi bản đồ giá trị được trích dẫn, kho lưu trữ loại bỏ các bí mật và các toán tử xác thực việc nhập trình phân tích cú pháp.
Điều này không bao gồm những gì — YAML neo, trường mở rộng (x-*) và thông số YAML 1.2 đầy đủ
Điều này không bao gồm những gì — YAML neo, trường mở rộng (x-*) và thông số YAML 1.2 đầy đủ. Giới hạn phạm vi an toàn vô hướng yaml ở các nhánh bản đồ giá trị được trích dẫn được hiển thị ở đây. Các biểu mẫu và mặc định lân cận không thể trả lời các câu hỏi đánh máy của trình phân tích cú pháp.
Thêm một giới hạn phạm vi yaml nữa theo sau Một ranh giới giới hạn yaml riêng biệt được dành riêng có không đối với các cách viết boolean và null được trích dẫn. Hãy coi ranh giới an toàn vô hướng yaml này như một sự loại trừ. Ưu tiên các giá trị được trích dẫn chính xác ánh xạ các chuỗi hơn là các dự đoán về cách nhập trình phân tích cú pháp.
Bài học rút ra: trích dẫn bất cứ điều gì rõ ràng không phải là một chuỗi — và so sánh YAML viết tay với đầu ra của trình chuyển đổi để nắm bắt các giá trị trần
Bài học rút ra: trích dẫn mọi thứ không rõ ràng là một chuỗi — và so sánh YAML viết tay với đầu ra của trình chuyển đổi để nhận các giá trị trần. Kiểm tra mức độ an toàn vô hướng của yaml dưới dạng tùy chọn nguồn, trường mô hình, dòng trình tự bản đồ các giá trị được trích dẫn và cảnh báo. Xóa bí mật trước khi kiểm tra cách gõ trình phân tích cú pháp.
Cuối cùng, nguồn lấy đi yaml xác nhận Một ranh giới quyết định yaml riêng biệt là các chuỗi cổng dấu hai chấm số nhận được các dấu ngoặc đơn. Đóng an toàn vô hướng yaml trong phạm vi hẹp: các chuỗi bản đồ giá trị được trích dẫn là một ứng cử viên; việc gõ trình phân tích cú pháp và tương đương với shell không được đảm bảo.