【发布时间】:2018-05-09 09:13:43
【问题描述】:
我有 docker 多阶段构建,例如:
FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
比我有 cloudbuild.yml:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/app:$BRANCH_NAME']
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/app:latest']
- name: 'gcr.io/cloud-builders/docker'
args: [
'build',
'--cache-from', 'gcr.io/$PROJECT_ID/app:latest',
'--cache-from', 'gcr.io/$PROJECT_ID/app:$BRANCH_NAME',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA',
'-t', 'gcr.io/$PROJECT_ID/app:$COMMIT_SHA',
'-f', 'config/dockerfiles/app.dockerfile',
'.'
]
- name: 'gcr.io/cloud-builders/docker'
args: ["tag", "gcr.io/$PROJECT_ID/app:$COMMIT_SHA", "gcr.io/$PROJECT_ID/app:$BRANCH_NAME"]
- name: 'gcr.io/cloud-builders/docker'
args: ["tag", "gcr.io/$PROJECT_ID/app:$COMMIT_SHA", "gcr.io/$PROJECT_ID/app:latest"]
images: [
'gcr.io/$PROJECT_ID/app:$COMMIT_SHA',
'gcr.io/$PROJECT_ID/app:$BRANCH_NAME',
'gcr.io/$PROJECT_ID/app:latest'
]
现在我不仅要缓存生成的图像,还要缓存构建器步骤。例如,在 go 中,我有使用 dep 构建的 /vendor,并希望缓存这些依赖项。我将如何通过谷歌云平台实现最简单的目标?我认为我的问题主要是特定于码头工人的,但仍然如此。
【问题讨论】:
-
您是否从我们的文档中查看了此页面? cloud.google.com/container-builder/docs/…
-
我做了,但是你怎么引用它?如果你能提供端到端的例子,我会非常高兴
-
你应该把这个帖子发到ServerFault,Stackoverflow更适合开发者关注。
-
你有没有找到任何解决方法?你做得怎么样?
-
最后,我制作了每次更新的次要图像,它是构建器图像。 ((即第一阶段是单独的 docker 文件,第二阶段使用带有 COPY --from
的第一阶段))
标签: docker google-cloud-platform