Tôi đang chạy docker trên CircleCI và tôi đang gặp sự cố khi lưu vào bộ nhớ cache lệnh COPY.Dịch vụ Docker Circle CI không cache COPY
Tài liệu CI vòng kết nối đề cập đến known caching issues và khuyên bạn nên sử dụng this perl script để đặt dấu thời gian trên tệp được sao chép để giữ bộ nhớ cache.
Tình trạng Docker best practice docs:
Trong trường hợp của các hướng dẫn ADD và COPY, các nội dung của tập tin (s) khi đưa vào hình ảnh được kiểm tra. Cụ thể, kiểm tra được thực hiện của (các) tệp và sau đó kiểm tra được sử dụng trong khi tra cứu bộ nhớ cache .
Theo đề xuất của CircleCi, tôi lưu bộ nhớ cache vào đĩa rồi tải lại vào lần chạy thử tiếp theo. Điều này có vẻ là làm việc như các lệnh trước khi bộ nhớ cache COPY chính xác.
Để gỡ lỗi, tôi sẽ xuất tổng kiểm tra md5 của tệp mà tôi đang cố gắng sao chép cục bộ, sau đó từ vùng chứa docker và nó khớp chính xác. Vì vậy, trong lý thuyết bộ nhớ cache nên tải. Tôi không chắc chắn Docker sử dụng md5 như một tổng kiểm tra.
này được circle.yml của tôi hiện tại:
máy: dịch vụ: - Docker
dependencies:
cache_directories:
- "~/docker"
pre:
- mkdir -p ~/docker
override:
- docker info
- if [[ -e ~/docker/image.tar ]]; then docker load -i ~/docker/image.tar; fi
- docker images
- docker build -t circles .
checkout:
post:
- ls -l
- ./timestamp-set-to-git.pl
- ls -l
test:
override:
- md5sum .bowerrc
- docker run circles md5sum .bowerrc
- docker save circles > ~/docker/image.tar
Đây là những gì xây dựng đầu ra cho các bước kiểm tra:
$md5sum .bowerrc
8d1a712721d735bd41bf738cae3226a2 .bowerrc
$docker run circles md5sum .bowerrc
8d1a712721d735bd41bf738cae3226a2 .bowerrc
Nhưng số docker build
báo cáo điều này:
Step 6 : RUN sudo npm install -g phantomjs gulp
---> Using cache
---> a7bbf2b17977
Step 7 : COPY .bowerrc /var/work/.bowerrc
---> 7ad82336de64
Có ai biết tại sao COPY không lưu trong bộ nhớ đệm không?
Hi Rimian, tôi nhấn cùng một vấn đề và tìm kiếm giải pháp. Khi tôi xây dựng container Docker của tôi tôi muốn sao chép các tập tin từ repro GIT của tôi bên trong container với lệnh COPY. Đôi khi nó làm việc, đôi khi không. Hãy cho tôi biết khi bạn tìm thấy giải pháp. – skroll
Các bước trước khi COPY được lưu vào bộ nhớ cache bởi docker, vì nó chỉ thực hiện băm trên chuỗi sau RUN –