From a5aa482b6c565136c8085b1669205b408da843c0 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Jan 2019 22:47:51 -0500 Subject: [PATCH] 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