Tôi đang làm việc để xây dựng hình ảnh đế để có thể chạy tất cả các ứng dụng Perl của chúng tôi. Các ứng dụng đòi hỏi phải cài đặt hàng trăm mô-đun CPAN. Việc xây dựng đầy đủ hình ảnh docker mất khoảng một giờ để hoàn thành.Tôi nên xử lý cập nhật mô-đun Perl như thế nào khi duy trì hình ảnh docker?
Sau khi thực hiện hình ảnh ban đầu, tôi không chắc cách tốt nhất để xử lý các cập nhật liên tục.
Chúng tôi có thể giữ một Dockerfile duy nhất trong git, sau đó sửa đổi điều này theo yêu cầu và đẩy mới xây dựng lên dockerhub. Tuy nhiên, nếu người xây dựng không có tất cả hình ảnh trung gian thì việc thêm một mô-đun CPAN đơn lẻ có thể là một quá trình cực kỳ tẻ nhạt và có thể mất một giờ trước khi họ biết liệu mô-đun mới có cài đặt đúng hay không. Ngoài ra nó sẽ được tải xuống mỗi mô-đun CPAN một lần nữa, mà có vẻ hơi mạo hiểm, vì có thể có một sự thay đổi đột phá trong mô-đun mới.
Ngoài ra, người thực hiện việc xây dựng có thể kéo hình ảnh docker-hub mới nhất và sau đó cài đặt mô-đun cpan tương tác, cam kết tạo và đẩy hình ảnh mới vào dockerhub. Tuy nhiên sau đó chúng tôi chỉ có hình ảnh dockerhub của chúng tôi, nhưng không phải chủ Dockerfile.
Hoặc một tùy chọn khác là tạo Dockerfile cho mỗi bản dựng mới, tham chiếu đến hình ảnh dockerhub trước đó. Điều này có vẻ quá phức tạp mặc dù.
Tùy chọn 1) có vẻ sai. Tôi khá chắc chắn chúng tôi không muốn xây dựng lại toàn bộ hình ảnh từ hệ điều hành cơ sở chỉ để cài đặt thêm một mô-đun. Tuy nhiên, việc phụ thuộc vào hình ảnh mà không có Dockerfiles có vẻ rất nguy hiểm.
Lựa chọn 3 hoặc một số biến có vẻ như hầu hết các "Docker phù hợp với" giải pháp. Nếu bạn làm theo một chiến lược gắn thẻ có tổ chức, người dùng "nâng cấp" lên phiên bản mới nhất sẽ có thể sử dụng các lớp hình ảnh trước đó và chỉ cần tạo các lớp hình ảnh mới nhất. Bạn có thể muốn tạo một phiên bản "cơ bản" với một tên khác để tránh phải làm một bản dựng đầy đủ trong trường hợp bạn cần phải xây dựng lại đầy đủ. – ldg