From a5aa482b6c565136c8085b1669205b408da843c0 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Jan 2019 22:47:51 -0500 Subject: [PATCH 1/4] Update arm/arm64 images to build cross-platform These Dockerfiles can not be built natively - must be built on x86_64 --- .dockerignore | 2 ++ Dockerfile.arm | 20 +++++++++++++++----- Dockerfile.arm64 | 31 +++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 Dockerfile.arm64 diff --git a/.dockerignore b/.dockerignore index 54b0aa3a7e..45e5435258 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,8 @@ .git .dockerignore Dockerfile +Dockerfile.arm +Dockerfile.arm64 CONTRIBUTORS.md README.md deployment/*/dist diff --git a/Dockerfile.arm b/Dockerfile.arm index a0b3d0e1da..4c626dd592 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -1,18 +1,28 @@ -ARG DOTNET_VERSION=3.0 +ARG DOTNET_VERSION=2.2 -FROM microsoft/dotnet:${DOTNET_VERSION}-sdk as builder + +FROM multiarch/qemu-user-static:x86_64-arm as qemu +FROM alpine as qemu_extract +COPY --from=qemu /usr/bin qemu_user_static.tgz +RUN tar -xzvf qemu_user_static.tgz + + +FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm32v7 as builder +COPY --from=qemu_extract qemu-* /usr/bin 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 clean -maxcpucount:1 \ && dotnet publish \ + -maxcpucount:1 \ --configuration release \ --output /jellyfin \ Jellyfin.Server -FROM microsoft/dotnet:${DOTNET_VERSION}-runtime + +FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm32v7 +COPY --from=qemu_extract qemu-* /usr/bin COPY --from=builder /jellyfin /jellyfin EXPOSE 8096 RUN apt-get update \ diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 new file mode 100644 index 0000000000..33b20793ed --- /dev/null +++ b/Dockerfile.arm64 @@ -0,0 +1,31 @@ +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 + + +FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm64v8 as builder +COPY --from=qemu_extract qemu-* /usr/bin +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 \ + --configuration release \ + --output /jellyfin \ + Jellyfin.Server + + +FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm64v8 +COPY --from=qemu_extract qemu-* /usr/bin +COPY --from=builder /jellyfin /jellyfin +EXPOSE 8096 +RUN apt-get update \ + && apt-get install -y ffmpeg +VOLUME /config /media +ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config From 23c52c3fb9a1f59c792db4c1b4fe649c51dac755 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Jan 2019 23:15:24 -0500 Subject: [PATCH 2/4] Disable cross-platform build for arm32v7 https://github.com/jellyfin/jellyfin/issues/665 --- Dockerfile.arm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Dockerfile.arm b/Dockerfile.arm index 4c626dd592..c1706fc74b 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -1,14 +1,7 @@ ARG DOTNET_VERSION=2.2 -FROM multiarch/qemu-user-static:x86_64-arm as qemu -FROM alpine as qemu_extract -COPY --from=qemu /usr/bin qemu_user_static.tgz -RUN tar -xzvf qemu_user_static.tgz - - FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm32v7 as builder -COPY --from=qemu_extract qemu-* /usr/bin WORKDIR /repo COPY . . #TODO Remove or update the sed line when we update dotnet version. @@ -22,7 +15,6 @@ RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \ FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm32v7 -COPY --from=qemu_extract qemu-* /usr/bin COPY --from=builder /jellyfin /jellyfin EXPOSE 8096 RUN apt-get update \ From aa25dd1a0b5e2cf853e01e26d4c85041eb3db16f Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Jan 2019 23:17:56 -0500 Subject: [PATCH 3/4] Update to .NETCore 3.0 --- Dockerfile.arm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.arm b/Dockerfile.arm index c1706fc74b..cf062f38af 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -1,4 +1,4 @@ -ARG DOTNET_VERSION=2.2 +ARG DOTNET_VERSION=3.0 FROM microsoft/dotnet:${DOTNET_VERSION}-sdk-stretch-arm32v7 as builder From 8108e295dcbb001e0ef1b83b3b4832cff78644a3 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Jan 2019 23:43:13 -0500 Subject: [PATCH 4/4] Add Dockerfile.arm64 docs --- Dockerfile.arm64 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 33b20793ed..6d7aa21183 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -1,3 +1,5 @@ +# Requires binfm_misc registration for aarch64 +# https://github.com/multiarch/qemu-user-static#binfmt_misc-register ARG DOTNET_VERSION=3.0