Sono in corso la finestra mobile CircleCI e ho problemi con la memorizzazione nella cache dei comandi di COPIA.Il servizio Cerchione CI circolare non memorizza nella cache la COPIA
I documenti CI Circle menzionano known caching issues e consigliamo di utilizzare this perl script per impostare i timestamp sul file copiato per conservare la cache.
Il Docker best practice docs Stato:
Nel caso delle istruzioni ADD e copia, il contenuto del file (s) essere messo nell'immagine sono esaminati. In particolare, viene eseguito un checksum del/dei file e quindi tale checksum viene utilizzato durante la ricerca della cache da .
Come per le raccomandazioni CircleCi, Mi risparmio la cache su disco poi caricarlo di nuovo sul prossimo test. Sembra che funzioni come comandi prima della cache di COPY correttamente.
Per eseguire il debug, sto trasmettendo il checksum MD5 del file che sto tentando di copiare localmente, quindi dal contenitore finestra mobile e corrisponde correttamente. Quindi, in teoria, dovrebbe caricare la cache. Non sono sicuro che Docker usi md5 come checksum.
questo è il mio circle.yml corrente:
macchina: servizi: - finestra mobile
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
Questo è ciò che le uscite di generazione per le operazioni di checksum:
$md5sum .bowerrc
8d1a712721d735bd41bf738cae3226a2 .bowerrc
$docker run circles md5sum .bowerrc
8d1a712721d735bd41bf738cae3226a2 .bowerrc
Ma il docker build
riporta questo:
Step 6 : RUN sudo npm install -g phantomjs gulp
---> Using cache
---> a7bbf2b17977
Step 7 : COPY .bowerrc /var/work/.bowerrc
---> 7ad82336de64
Qualcuno sa perché COPY non sta memorizzando nella cache?
Ciao Rimian, ho riscontrato lo stesso problema e ho cercato la soluzione. Quando costruisco il mio contenitore Docker voglio copiare i file dalla mia replica GIT all'interno del contenitore con il comando COPY. A volte funziona, a volte no. Fammi sapere quando hai trovato la soluzione. – skroll
I passaggi prima di COPIA vengono memorizzati nella cache dalla finestra mobile, poiché in questo modo esegue effettivamente solo un hash sulla stringa dopo ESEGUI –