Docker 代码更改会中断apk添加缓存

Docker 代码更改会中断apk添加缓存,docker,Docker,是否可以拆分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 upda

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

编写的dockerfile不包含任何
ADD
说明,因此
main.go
不存在

在使用alpine和apk时,您也没有处理“
apt get
”缓存,而是要超越这些错误

为了保持缓存docker层而忽略代码更改,请将它们放在任何
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

谢谢你,安东尼。我已使用Dockerfile中的完整和更新区块更新了问题。我还是有同样的问题。第一次运行命令始终执行,即使在连续运行时也不会缓存。@smokedice dockerfile已满足问题中的行为
apk
不是
apt get