我正在使用Dockerhub的外部Docker映像。
在每个步骤中,将一次又一次地从dockerhub拉出。是的,这是所需的工作流程。
我的问题是我们可以缓存此图像,以便在每个步骤中都不会从Dockerhub拉出吗?此dockerimage不会经常变化,因为它仅具有预安装的节点和流星。
所以可以缓存Docker映像?
原始bitbucket-pipeline.yml
image: tasktrain/node-meteor-mup
pipelines:
branches:
'{develop}':
- step:
name: "Client: Install Dependencies"
caches:
- node
script:
- npm install
- npm run setup-meteor-client-bundle
artifacts:
- node_modules/**
- step:
name: "Client: Build for Staging"
script:
- npm run build-browser:stag
artifacts:
- dist/**
- step:
name: "Client: Deploy to Staging"
deployment: staging
script:
- pipe: atlassian/aws-s3-deploy:0.2.2
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: $S3_STAGING_BUCKET_NAME
LOCAL_PATH: 'dist'
ACL: "public-read"
DELETE_FLAG: "true"
EXTRA_ARGS: "--follow-symlinks --quiet"
- step:
name: "Server: Build and Deploy to Staging"
script:
- cd server
- mup setup --config=.deploy/mup-settings.stag.js
- mup deploy --config=.deploy/mup-settings.stag.js --settings=meteor-settings.stag.json
正如OP在对其他答案的评论中所说的那样,定义Docker Cache对构建图像本身无效
image: tasktrain/node-meteor-mup
始终为每个步骤下载,然后在该图像中执行步骤脚本。Afaik,Docker Cache
services:
- docker
caches:
- docker
仅适用于在中拉出或构建的图像。
但是,根据此博客文章,Bitbucket管道最近开始在内部缓存公共构建图像:
公共图像缓存 - 在幕后,管道最近开始缓存公共Docker映像,从而引起了明显的启动时间,从我们的基础架构上运行的所有构建时间。
还有一个开放的功能请求也可以缓存私有构建图像。
确实有可能缓存依赖关系,而Docker是Bitbucket Pipelines的预定义缓存
pipelines:
default:
- step:
services:
- docker
caches:
- docker
script:
- docker pull my-own-repository:5000/my-image