Selaa lähdekoodia

Update arm/arm64 images to build cross-platform
These Dockerfiles can not be built natively - must be built on x86_64

Andrew Rabert 6 vuotta sitten
vanhempi
sitoutus
a5aa482b6c
3 muutettua tiedostoa jossa 48 lisäystä ja 5 poistoa
  1. 2 0
      .dockerignore
  2. 15 5
      Dockerfile.arm
  3. 31 0
      Dockerfile.arm64

+ 2 - 0
.dockerignore

@@ -1,6 +1,8 @@
 .git
 .dockerignore
 Dockerfile
+Dockerfile.arm
+Dockerfile.arm64
 CONTRIBUTORS.md
 README.md
 deployment/*/dist

+ 15 - 5
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 \

+ 31 - 0
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