Tôi tự hỏi bạn đang sử dụng hình ảnh như thế nào. Thêm một tập tin 20MB trong khi xây dựng một hình ảnh gần như là ngay lập tức. Mayb bạn bằng cách nào đó xây dựng hình ảnh trong quá trình triển khai, như AWS hiện khi bạn cung cấp cho nó một Dockerfile.
Trong mọi trường hợp, tôi nghĩ điều đó phụ thuộc vào cách bạn triển khai. Nếu bạn đang di chuyển các hình ảnh xung quanh mình, tôi không thấy nhiều sự khác biệt giữa việc thêm một tệp .war và thư mục WAR đã được giải mã. Tôi sẽ nói làm những gì thuận tiện cho bạn. Tuy nhiên, nếu bạn đôi khi chạy ứng dụng từ Docker và đôi khi từ một .war (có thể bỏ lỡ một số điểm của Docker), bạn cũng có thể sử dụng .war tất cả các thời gian.
Nếu bạn đang triển khai một cái gì đó như AWS Elastic Beanstalk (cái gì đó kéo hình ảnh từ một kho lưu trữ), muốn một tệp Dockerfile hoặc tệp Dockerrun.aws.json, thì tách hình ảnh khỏi những gì bạn thực sự triển khai một số ý nghĩa (hoặc nó đã có ý nghĩa với tôi cho đến nay). Điều này cho phép vùng chứa giữ nguyên, trong khi cập nhật ứng dụng của bạn có thể chỉ cần sao chép tệp .jar/.war vào đúng vị trí (cũng có thể bỏ sót một phần của điểm Docker;).
Điều tôi đang làm là tạo hình ảnh cơ sở trên Docker Hub và sau đó sử dụng tệp Dockerrun.aws.json để ánh xạ trong ứng dụng của tôi. Bằng cách đó, AWS không cần phải xây dựng hình ảnh của tôi, chỉ cần kéo nó. Đó là nhanh hơn và ít tốn kém hơn ($). Nhưng nó tách riêng ứng dụng của tôi khỏi hình ảnh, điều này có thể làm phức tạp triển khai trong một số trường hợp. Tuy nhiên, vì hình ảnh của tôi rất ổn định, tôi thường chỉ bó một tệp .jar, một tệp Dockerrun.aws.json và một tệp shell vào một tệp .zip và tải nó lên AWS. Khá dễ dàng.
My Dockerfile là khá đơn giản và thực sự tất cả những gì cần cho ứng dụng khởi động mùa xuân của tôi:
FROM java:8
VOLUME /tmp
VOLUME /app
EXPOSE 8080
ENTRYPOINT ["sh","/app/app.sh"]
Bạn có thể làm điều gì đó tương tự và sử dụng tùy chọn -v, vv, để lập bản đồ số lượng ứng dụng của bạn, đó là cài đặt môi trường, vv BTW, this image có sẵn trên Docker Hub.
Có lẽ tôi chỉ nên xây dựng và gói dự án trên máy chủ với Jenkins, sau đó 20MB sẽ là ngay lập tức, từ Macbook của tôi nó không phải là ngay lập tức, 20MB mất mãi mãi trên 8 megabit Internet. –
Tôi nghĩ đó sẽ là một cách tiếp cận rất tốt. Làm cho Jenkins không chỉ máy chủ CI của bạn, mà là máy chủ tự động hóa của bạn: sử dụng nó quá xây dựng, kiểm tra và gói hệ thống của bạn. – objectuser