diff --git a/.dockerignore b/.dockerignore index 54b0aa3a7..45e543525 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 a0b3d0e1d..4c626dd59 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 000000000..33b20793e --- /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