Browse code

Merge pull request #40380 from thaJeztah/dockerfile_improvements

Dockerfile: improve binary build stages

Sebastiaan van Stijn authored on 2020/05/08 22:00:35
Showing 1 changed files
... ...
@@ -145,92 +145,74 @@ RUN --mount=type=cache,sharing=locked,id=moby-cross-true-aptlib,target=/var/lib/
145 145
 FROM runtime-dev-cross-${CROSS} AS runtime-dev
146 146
 
147 147
 FROM base AS tomlv
148
-ENV INSTALL_BINARY_NAME=tomlv
149 148
 ARG TOMLV_COMMIT
150
-COPY hack/dockerfile/install/install.sh ./install.sh
151
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
152 149
 RUN --mount=type=cache,target=/root/.cache/go-build \
153 150
     --mount=type=cache,target=/go/pkg/mod \
154
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
151
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
152
+        PREFIX=/build /tmp/install/install.sh tomlv
155 153
 
156 154
 FROM base AS vndr
157
-ENV INSTALL_BINARY_NAME=vndr
158 155
 ARG VNDR_COMMIT
159
-COPY hack/dockerfile/install/install.sh ./install.sh
160
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
161 156
 RUN --mount=type=cache,target=/root/.cache/go-build \
162 157
     --mount=type=cache,target=/go/pkg/mod \
163
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
158
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
159
+        PREFIX=/build /tmp/install/install.sh vndr
164 160
 
165 161
 FROM dev-base AS containerd
166 162
 ARG DEBIAN_FRONTEND
167
-ARG CONTAINERD_COMMIT
168 163
 RUN --mount=type=cache,sharing=locked,id=moby-containerd-aptlib,target=/var/lib/apt \
169 164
     --mount=type=cache,sharing=locked,id=moby-containerd-aptcache,target=/var/cache/apt \
170 165
         apt-get update && apt-get install -y --no-install-recommends \
171 166
             libbtrfs-dev
172
-ENV INSTALL_BINARY_NAME=containerd
173
-COPY hack/dockerfile/install/install.sh ./install.sh
174
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
167
+ARG CONTAINERD_COMMIT
175 168
 RUN --mount=type=cache,target=/root/.cache/go-build \
176 169
     --mount=type=cache,target=/go/pkg/mod \
177
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
170
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
171
+        PREFIX=/build /tmp/install/install.sh containerd
178 172
 
179 173
 FROM dev-base AS proxy
180
-ENV INSTALL_BINARY_NAME=proxy
181 174
 ARG LIBNETWORK_COMMIT
182
-COPY hack/dockerfile/install/install.sh ./install.sh
183
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
184 175
 RUN --mount=type=cache,target=/root/.cache/go-build \
185 176
     --mount=type=cache,target=/go/pkg/mod \
186
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
177
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
178
+        PREFIX=/build /tmp/install/install.sh proxy
187 179
 
188 180
 FROM base AS golangci_lint
189
-ENV INSTALL_BINARY_NAME=golangci_lint
190 181
 ARG GOLANGCI_LINT_COMMIT
191
-COPY hack/dockerfile/install/install.sh ./install.sh
192
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
193 182
 RUN --mount=type=cache,target=/root/.cache/go-build \
194 183
     --mount=type=cache,target=/go/pkg/mod \
195
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
184
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
185
+        PREFIX=/build /tmp/install/install.sh golangci_lint
196 186
 
197 187
 FROM base AS gotestsum
198
-ENV INSTALL_BINARY_NAME=gotestsum
199 188
 ARG GOTESTSUM_COMMIT
200
-COPY hack/dockerfile/install/install.sh ./install.sh
201
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
202 189
 RUN --mount=type=cache,target=/root/.cache/go-build \
203 190
     --mount=type=cache,target=/go/pkg/mod \
204
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
191
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
192
+        PREFIX=/build /tmp/install/install.sh gotestsum
205 193
 
206 194
 FROM base AS shfmt
207
-ENV INSTALL_BINARY_NAME=shfmt
208 195
 ARG SHFMT_COMMIT
209
-COPY hack/dockerfile/install/install.sh ./install.sh
210
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
211 196
 RUN --mount=type=cache,target=/root/.cache/go-build \
212 197
     --mount=type=cache,target=/go/pkg/mod \
213
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
198
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
199
+        PREFIX=/build /tmp/install/install.sh shfmt
214 200
 
215 201
 FROM dev-base AS dockercli
216
-ENV INSTALL_BINARY_NAME=dockercli
217 202
 ARG DOCKERCLI_CHANNEL
218 203
 ARG DOCKERCLI_VERSION
219
-COPY hack/dockerfile/install/install.sh ./install.sh
220
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
221 204
 RUN --mount=type=cache,target=/root/.cache/go-build \
222 205
     --mount=type=cache,target=/go/pkg/mod \
223
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
206
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
207
+        PREFIX=/build /tmp/install/install.sh dockercli
224 208
 
225 209
 FROM runtime-dev AS runc
226
-ENV INSTALL_BINARY_NAME=runc
227 210
 ARG RUNC_COMMIT
228 211
 ARG RUNC_BUILDTAGS
229
-COPY hack/dockerfile/install/install.sh ./install.sh
230
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
231 212
 RUN --mount=type=cache,target=/root/.cache/go-build \
232 213
     --mount=type=cache,target=/go/pkg/mod \
233
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
214
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
215
+        PREFIX=/build /tmp/install/install.sh runc
234 216
 
235 217
 FROM dev-base AS tini
236 218
 ARG DEBIAN_FRONTEND
... ...
@@ -240,21 +222,17 @@ RUN --mount=type=cache,sharing=locked,id=moby-tini-aptlib,target=/var/lib/apt \
240 240
         apt-get update && apt-get install -y --no-install-recommends \
241 241
             cmake \
242 242
             vim-common
243
-COPY hack/dockerfile/install/install.sh ./install.sh
244
-ENV INSTALL_BINARY_NAME=tini
245
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
246 243
 RUN --mount=type=cache,target=/root/.cache/go-build \
247 244
     --mount=type=cache,target=/go/pkg/mod \
248
-        PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
245
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
246
+        PREFIX=/build /tmp/install/install.sh tini
249 247
 
250 248
 FROM dev-base AS rootlesskit
251
-ENV INSTALL_BINARY_NAME=rootlesskit
252 249
 ARG ROOTLESSKIT_COMMIT
253
-COPY hack/dockerfile/install/install.sh ./install.sh
254
-COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
255 250
 RUN --mount=type=cache,target=/root/.cache/go-build \
256 251
     --mount=type=cache,target=/go/pkg/mod \
257
-        PREFIX=/build/ ./install.sh $INSTALL_BINARY_NAME
252
+    --mount=type=bind,src=hack/dockerfile/install,target=/tmp/install \
253
+        PREFIX=/build /tmp/install/install.sh rootlesskit
258 254
 COPY ./contrib/dockerd-rootless.sh /build
259 255
 
260 256
 FROM djs55/vpnkit:${VPNKIT_VERSION} AS vpnkit