Can Travis CI cache docker images?

时光总嘲笑我的痴心妄想 提交于 2019-12-08 15:21:12

问题


Is it possible to add a setting to cache my docker image anywhere in the travis configuration ? Mine is a bigger docker image and it takes a while for it to download.

Any suggestions ?


回答1:


See Caching Docker Images on Build #5358 for the answer(s). For Docker 1.12 available now on Travis, it is recommended to manually cache the images. For the Docker 1.13, you could use its --cache-from when it is on Travis.




回答2:


Simplest solution today (October 2019) is to add the following to .travis.yml:

cache:
  directories:
  - docker_images

before_install:
- docker load -i docker_images/images.tar || true

before_cache:
- docker save -o docker_images/images.tar $(docker images -a -q)



回答3:


I just found the following approach as discussed in this article.

services:
  - docker

before_script:
  - docker pull myorg/myimage || true
script:
  - docker build --pull --cache-from myorg/myimage --tag myorg/myimage .
  - docker run myorg/myimage

after_script:
  - docker images

before_deploy:
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
deploy:
  provider: script
  script: docker push myorg/myimage
  on:
    branch: master



回答4:


This works for me:

  • Update the desired docker image name instead of <IMAGE_NAME_HERE> (3 places).
  • You can also use the same configuration for multiple images, docker save can handle multiple images, just make sure to pull them before trying to save them.
services:
  - docker

cache:
  directories:
    - docker-cache

before_script:
  - |
    filename=docker-cache/saved_images.tar
    if [[ -f "$filename" ]]; then docker load < "$filename"; fi
    mkdir -p docker-cache
    docker pull <IMAGE_NAME_HERE>
    docker save -o "$filename" <IMAGE_NAME_HERE>

script:
  - docker run <IMAGE_NAME_HERE>...



来源:https://stackoverflow.com/questions/32866599/can-travis-ci-cache-docker-images

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!