From afd52d1d37cc57bb0e47a802128fdb1b295012a9 Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Tue, 16 Feb 2021 16:08:53 +0000 Subject: [PATCH] Use go cross-compilation in docker build significantly faster builds now. Every pre-compilation step (typescript, css, etc.) happens natively, then GOARCH=xxx make compile is also run natively for each architecture. The output it then copied into each container. --- Dockerfile | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 284851d..b302296 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,23 @@ -FROM golang:latest AS build +FROM --platform=$BUILDPLATFORM golang:latest AS support COPY . /opt/build RUN apt update -y \ - && apt install build-essential python3-pip curl software-properties-common sed upx -y \ + && apt install build-essential python3-pip curl software-properties-common sed -y \ && (curl -sL https://deb.nodesource.com/setup_14.x | bash -) \ && apt install nodejs \ - && (cd /opt/build; make all GOESBUILD=on; make compress) \ + && (cd /opt/build; make configuration npm email version typescript bundle-css swagger copy GOESBUILD=on) \ && sed -i 's#id="password_resets-watch_directory" placeholder="/config/jellyfin"#id="password_resets-watch_directory" value="/jf" disabled#g' /opt/build/build/data/html/setup.html + +FROM --platform=$BUILDPLATFORM golang:latest AS build +ARG TARGETARCH +ENV GOARCH=$TARGETARCH + +COPY --from=support /opt/build /opt/build + +RUN (cd /opt/build; make compile) + FROM golang:latest COPY --from=build /opt/build/build /opt/jfa-go