Browse Source

Dockerfile: mount install scripts instead of copying

These scripts are only used to build the binaries, and
the scripts themselves don't have to be persisted in an
image, so we can mount them instead of copying to the stage

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 5 years ago
parent
commit
de7f0120fd
1 changed files with 23 additions and 34 deletions
  1. 23 34
      Dockerfile

+ 23 - 34
Dockerfile

@@ -145,82 +145,73 @@ FROM runtime-dev-cross-${CROSS} AS runtime-dev
 
 
 FROM base AS tomlv
 FROM base AS tomlv
 ARG TOMLV_COMMIT
 ARG TOMLV_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/tomlv.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh tomlv
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh tomlv
 
 
 FROM base AS vndr
 FROM base AS vndr
 ARG VNDR_COMMIT
 ARG VNDR_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/vndr.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh vndr
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh vndr
 
 
 FROM dev-base AS containerd
 FROM dev-base AS containerd
 ARG DEBIAN_FRONTEND
 ARG DEBIAN_FRONTEND
-ARG CONTAINERD_COMMIT
 RUN --mount=type=cache,sharing=locked,id=moby-containerd-aptlib,target=/var/lib/apt \
 RUN --mount=type=cache,sharing=locked,id=moby-containerd-aptlib,target=/var/lib/apt \
     --mount=type=cache,sharing=locked,id=moby-containerd-aptcache,target=/var/cache/apt \
     --mount=type=cache,sharing=locked,id=moby-containerd-aptcache,target=/var/cache/apt \
         apt-get update && apt-get install -y --no-install-recommends \
         apt-get update && apt-get install -y --no-install-recommends \
             libbtrfs-dev
             libbtrfs-dev
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/containerd.installer ./
+ARG CONTAINERD_COMMIT
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh containerd
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh containerd
 
 
 FROM dev-base AS proxy
 FROM dev-base AS proxy
 ARG LIBNETWORK_COMMIT
 ARG LIBNETWORK_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/proxy.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh proxy
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh proxy
 
 
 FROM base AS golangci_lint
 FROM base AS golangci_lint
 ARG GOLANGCI_LINT_COMMIT
 ARG GOLANGCI_LINT_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/golangci_lint.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh golangci_lint
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh golangci_lint
 
 
 FROM base AS gotestsum
 FROM base AS gotestsum
 ARG GOTESTSUM_COMMIT
 ARG GOTESTSUM_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/gotestsum.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh gotestsum
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh gotestsum
 
 
 FROM base AS shfmt
 FROM base AS shfmt
 ARG SHFMT_COMMIT
 ARG SHFMT_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/shfmt.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh shfmt
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh shfmt
 
 
 FROM dev-base AS dockercli
 FROM dev-base AS dockercli
 ARG DOCKERCLI_CHANNEL
 ARG DOCKERCLI_CHANNEL
 ARG DOCKERCLI_VERSION
 ARG DOCKERCLI_VERSION
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/dockercli.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh dockercli
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh dockercli
 
 
 FROM runtime-dev AS runc
 FROM runtime-dev AS runc
 ARG RUNC_COMMIT
 ARG RUNC_COMMIT
 ARG RUNC_BUILDTAGS
 ARG RUNC_BUILDTAGS
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/runc.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh runc
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh runc
 
 
 FROM dev-base AS tini
 FROM dev-base AS tini
 ARG DEBIAN_FRONTEND
 ARG DEBIAN_FRONTEND
@@ -230,19 +221,17 @@ RUN --mount=type=cache,sharing=locked,id=moby-tini-aptlib,target=/var/lib/apt \
         apt-get update && apt-get install -y --no-install-recommends \
         apt-get update && apt-get install -y --no-install-recommends \
             cmake \
             cmake \
             vim-common
             vim-common
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/tini.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build ./install.sh tini
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh tini
 
 
 FROM dev-base AS rootlesskit
 FROM dev-base AS rootlesskit
 ARG ROOTLESSKIT_COMMIT
 ARG ROOTLESSKIT_COMMIT
-COPY hack/dockerfile/install/install.sh ./install.sh
-COPY hack/dockerfile/install/rootlesskit.installer ./
 RUN --mount=type=cache,target=/root/.cache/go-build \
 RUN --mount=type=cache,target=/root/.cache/go-build \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/go/pkg/mod \
-        PREFIX=/build/ ./install.sh rootlesskit
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
+        PREFIX=/build /tmp/install/install.sh rootlesskit
 COPY ./contrib/dockerd-rootless.sh /build
 COPY ./contrib/dockerd-rootless.sh /build
 
 
 FROM djs55/vpnkit:${VPNKIT_VERSION} AS vpnkit
 FROM djs55/vpnkit:${VPNKIT_VERSION} AS vpnkit