代码更改中断apk添加缓存

时间:2017-08-01 18:39:25

标签: docker

是否可以拆分apk addgo 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

1 个答案:

答案 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