Docker 在Travis CI上缓存单个文件

Docker 在Travis CI上缓存单个文件,docker,travis-ci,Docker,Travis Ci,在我基于travis的构建中,我需要首先下载一个大的.tar.gz文件 这个.tar.gz永远不会更改,所以最好将其缓存 .tar.gz在我的Dockerfile中下载: runcurlftp://mycompanyftp.com/foo/bar/mylargefile.tar.gz -o/tmp/mylarge.tar.gz 这样,docker容器就可以构建包含文件的容器了 如何缓存此文件 PS:也可以在安装之前在上下载该文件,并使用dockerADD将其放入docker容器中。只要您的doc

在我基于travis的构建中,我需要首先下载一个大的
.tar.gz
文件

这个
.tar.gz
永远不会更改,所以最好将其缓存

.tar.gz
在我的Dockerfile中下载:

runcurlftp://mycompanyftp.com/foo/bar/mylargefile.tar.gz -o/tmp/mylarge.tar.gz

这样,docker容器就可以构建包含文件的容器了

如何缓存此文件


PS:也可以在安装之前在
上下载该文件,并使用docker
ADD
将其放入docker容器中。

只要您的
dockerfile
中有此命令,这是不可能的

相反,我建议您将此命令放在
.travis.yml
文件中,并作为预构建活动的一部分下载该文件:

before_install: |
  if ! [ -f ./src/mylarge.tar.gz ]; then
    curl ftp://mycompanyftp.com/foo/bar/mylargefile.tar.gz -o ./src/mylarge.tar.gz;
  fi

install: |
  ./scripts/build.sh;

script: |
  ./scripts/test-integration.sh;

cache:
  directories:
    - $TRAVIS_BUILD_DIR/src/

after_success: |
  ./scripts/deploy.sh;
如您所见,如果文件不存在,安装前的
部分将下载该文件。
cache
部分将告诉Travis保留
/src/
目录,并在下一次构建开始时将其还原,以便不会再次下载

dockerfile
中,您现在要做的不是下载,而是将本地文件复制到容器中:

COPY ./src/mylargefile.tar.gz /tmp/mylargefile.tar.gz

您可以阅读有关Travis CI缓存的更多信息。

您可以使用,并将文件下载到,例如
/tmp/cached/
。这是否回答了您的问题?