是否可以拆分apk add
和go build
命令,以便代码更改不会重新安装apk依赖项?
FROM golang:1.8-alpine AS go-build-env
RUN apk update && apk upgrade && apk add --no-cache bash git
RUN go build /bin/webui main.go
编辑:已更新
FROM golang:1.8-alpine AS go-build-env
RUN apk update && apk upgrade && apk add --no-cache bash git openssh curl g++ \
make perl; go-wrapper download
RUN mkdir -p /go/src/github.com/markwallsgrove/saml_federation_proxy \
/go/src/github.com/markwallsgrove/saml_federation_proxy/models \
/go/src/github.com/markwallsgrove/saml_federation_proxy/webui
COPY webui/main.go /go/src/github.com/markwallsgrove/saml_federation_proxy/webui
COPY models /go/src/github.com/markwallsgrove/saml_federation_proxy/models
WORKDIR /go/src/github.com/markwallsgrove/saml_federation_proxy/webui
答案 0 :(得分:1)
所写的dockerfile不包含任何ADD
指令,因此main.go
不存在。
当你使用alpine和apt-get
时,你也没有处理“apk
”缓存,但是要超越这些错误......
为了保持缓存泊坞窗图层而忽略代码更改,请将它们置于任何ADD
/ COPY
指令之上 - 这会使其下方的所有图层无效。
在您的示例dockerfile中,它看起来像这样:
FROM golang:1.8-alpine AS go-build-env
RUN apk update && apk upgrade && apk add --no-cache bash git
ADD main.go .
RUN go build /bin/webui main.go