From c5ac36c88686e7384d31d870ba35f4bbe8c38fdb Mon Sep 17 00:00:00 2001 From: n8225 Date: Fri, 15 Feb 2019 23:34:16 -0600 Subject: [PATCH] Fix docker arm builds --- Dockerfile.arm | 15 +++++++++++---- Dockerfile.arm64 | 13 ++++++------- hooks/pre_build | 4 ++++ 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 hooks/pre_build diff --git a/Dockerfile.arm b/Dockerfile.arm index 039274197c..0dc37a6446 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -1,23 +1,30 @@ +# Requires binfm_misc registration for arm +# https://github.com/multiarch/qemu-user-static#binfmt_misc-register ARG DOTNET_VERSION=3.0 -FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm32v7 as builder +FROM multiarch/qemu-user-static:x86_64-arm as qemu +FROM alpine as qemu_extract +COPY --from=qemu /usr/bin qemu-arm-static.tar.gz +RUN tar -xzvf qemu-arm-static.tar.gz + +FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch as builder WORKDIR /repo COPY . . #TODO Remove or update the sed line when we update dotnet version. RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \ && find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \; \ - && dotnet clean -maxcpucount:1 \ && dotnet publish \ - -maxcpucount:1 \ + -r linux-arm \ --configuration release \ --output /jellyfin \ Jellyfin.Server FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm32v7 +COPY --from=qemu_extract qemu-arm-static /usr/bin RUN apt-get update \ - && apt-get install -y ffmpeg + && apt-get install --no-install-recommends --no-install-suggests -y ffmpeg COPY --from=builder /jellyfin /jellyfin EXPOSE 8096 VOLUME /config /media diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 06ba21b918..ec42610c00 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -5,28 +5,27 @@ ARG DOTNET_VERSION=3.0 FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu FROM alpine as qemu_extract -COPY --from=qemu /usr/bin qemu_user_static.tgz -RUN tar -xzvf qemu_user_static.tgz +COPY --from=qemu /usr/bin qemu-aarch64-static.tar.gz +RUN tar -xzvf qemu-aarch64-static.tar.gz -FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm64v8 as builder -COPY --from=qemu_extract qemu-* /usr/bin +FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch as builder WORKDIR /repo COPY . . #TODO Remove or update the sed line when we update dotnet version. RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \ && find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \; \ - && dotnet clean \ && dotnet publish \ + -r linux-arm64 \ --configuration release \ --output /jellyfin \ Jellyfin.Server FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm64v8 +COPY --from=qemu_extract qemu-aarch64-static /usr/bin RUN apt-get update \ - && apt-get install -y ffmpeg -COPY --from=qemu_extract qemu-* /usr/bin + && apt-get install --no-install-recommends --no-install-suggests -y ffmpeg COPY --from=builder /jellyfin /jellyfin EXPOSE 8096 VOLUME /config /media diff --git a/hooks/pre_build b/hooks/pre_build new file mode 100644 index 0000000000..a08c740b38 --- /dev/null +++ b/hooks/pre_build @@ -0,0 +1,4 @@ +#!/bin/bash +# Register qemu-*-static for all supported processors except the +# current one, but also remove all registered binfmt_misc before +docker run --rm --privileged multiarch/qemu-user-static:register --reset