Docker 不缓存 Alpine apk add 命令

kor*_*ral 2 docker dockerfile docker-compose alpine-linux

每次我构建容器时,我都必须等待apk add docker完成,这需要很长时间。由于每次下载相同的内容时,我是否可以以某种方式强制 Docker 缓存 apk 的下载以用于开发目的?

这是我的 Dockerfile:

FROM golang:1.13.5-alpine

WORKDIR /go/src/app
COPY src .

RUN go get -d -v ./...
RUN go install -v ./...

RUN apk add --update docker

CMD ["app"]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我用这部分volumes: - /var/run/docker.sock:/var/run/docker.sockdocker-compose.yml,如果该事项使用兄弟容器。

编辑:我发现谷歌docker.tgz 在 Chromium 中复制:

# add docker client -- do not install docker via apk -- it will try to install
# docker engine which takes a lot of space as well (we don't need it, we need
# only the small client to communicate with the host's docker server)
ADD build/docker/docker.tgz /
Run Code Online (Sandbox Code Playgroud)

那是什么docker.tgz?我怎么才能得到它?

Adi*_*iii 8

重新排序您的 Dockerfile,它应该可以工作。

FROM golang:1.13.5-alpine
RUN apk add --update docker

WORKDIR /go/src/app
COPY src .
RUN go get -d -v ./...
RUN go install -v ./...
CMD ["app"]
Run Code Online (Sandbox Code Playgroud)

由于您在安装之前进行复制,因此每当您更改src缓存中的某些内容时,docker installtion 都会失效。