Tôi có một tệp nén cục bộ ~ 300Mb mà tôi thêm vào hình ảnh trên đế. Trạng thái tiếp theo sau đó trích xuất hình ảnh.Docker làm thế nào để ADD một tập tin mà không có một cam kết nó vào một hình ảnh?
Vấn đề là câu lệnh ADD dẫn đến một cam kết dẫn đến một lớp hệ thống tệp mới làm cho hình ảnh ~ 300Mb lớn hơn mức cần thiết.
ADD /files/apache-stratos.zip /opt/apache-stratos.zip
RUN unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
Câu hỏi: Có một công việc xung quanh để ADD tập tin địa phương mà không gây ra một cam kết?
Một lựa chọn là để chạy một máy chủ web đơn giản (ví dụ python -m SimpleHTTPServer
) trước khi bắt đầu Docker xây dựng, và sau đó sử dụng wget
để lấy các tập tin, nhưng điều đó có vẻ hơi lộn xộn:
RUN wget http://localhost:8000/apache-stratos.zip && \
unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
lựa chọn khác là giải nén tập tin nén tại container bắt đầu thay vì thời gian xây dựng, nhưng tôi muốn giữ cho khởi động càng nhanh càng tốt.
Có vẻ như không giải nén tệp '.zip' trên Docker 1.2.0. –
"Nếu [src] là tệp lưu trữ tar cục bộ theo định dạng nén được nhận dạng (danh tính, gzip, bzip2 hoặc xz) thì nó được giải nén dưới dạng thư mục". –
Thực tế ADD thiếu hỗ trợ cho các tệp '.zip' có vẻ là một quyết định dự định: https://github.com/docker/docker/issues/15036 – jap1968