From fa160869bf2aec88249e961d2d90560f85494272 Mon Sep 17 00:00:00 2001 From: Marshall Asch Date: Tue, 16 Jul 2024 14:28:31 -0400 Subject: [PATCH] feat: merge the amd64 and arm dockerfiles together to be built from the same file (#107) --- Dockerfile | 59 +++++++++++++++++++++-------------------- Dockerfile.arm64 | 61 ------------------------------------------- Dockerfile.armv7 | 61 ------------------------------------------- root/installBinary.sh | 11 +++++++- 4 files changed, 41 insertions(+), 151 deletions(-) delete mode 100644 Dockerfile.arm64 delete mode 100644 Dockerfile.armv7 diff --git a/Dockerfile b/Dockerfile index 82af40b..84a6777 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,23 @@ FROM ubuntu:20.04 -ARG S6_OVERLAY_VERSION=v2.2.0.3 -ARG S6_OVERLAY_ARCH=amd64 -ARG PLEX_BUILD=linux-x86_64 -ARG PLEX_DISTRO=debian +ARG TARGETARCH +ARG TARGETPLATFORM + ARG DEBIAN_FRONTEND="noninteractive" ENV TERM="xterm" LANG="C.UTF-8" LC_ALL="C.UTF-8" ENTRYPOINT ["/init"] +# Add user +RUN useradd -U -d /config -s /bin/false plex && \ + usermod -G users plex && \ + \ +# Setup directories + mkdir -p \ + /config \ + /transcode \ + /data + RUN \ # Update and get dependencies apt-get update && \ @@ -17,29 +26,24 @@ RUN \ curl \ xmlstarlet \ uuid-runtime \ - unrar \ - && \ - \ + unrar && \ + apt-get -y autoremove && \ + apt-get -y clean && \ + rm -rf /var/lib/apt/lists/* + # Fetch and extract S6 overlay +ARG S6_OVERLAY_VERSION=v2.2.0.3 +RUN if [ "${TARGETPLATFORM}" = 'linux/arm/v7' ]; then \ + S6_OVERLAY_ARCH='armhf'; \ + elif [ "${TARGETARCH}" = 'amd64' ]; then \ + S6_OVERLAY_ARCH='amd64'; \ + elif [ "${TARGETARCH}" = 'arm64' ]; then \ + S6_OVERLAY_ARCH='aarch64'; \ + fi \ + && \ curl -J -L -o /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz https://github.com/just-containers/s6-overlay/releases/download/${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz && \ tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C / --exclude='./bin' && \ tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C /usr ./bin && \ - \ -# Add user - useradd -U -d /config -s /bin/false plex && \ - usermod -G users plex && \ - \ -# Setup directories - mkdir -p \ - /config \ - /transcode \ - /data \ - && \ - \ -# Cleanup - apt-get -y autoremove && \ - apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* && \ rm -rf /tmp/* && \ rm -rf /var/tmp/* @@ -49,13 +53,12 @@ VOLUME /config /transcode ENV CHANGE_CONFIG_DIR_OWNERSHIP="true" \ HOME="/config" -ARG TAG=beta -ARG URL= - COPY root/ / -RUN \ # Save version and install - /installBinary.sh +ARG PLEX_DISTRO=debian +ARG TAG=beta +ARG URL= +RUN /installBinary.sh HEALTHCHECK --interval=5s --timeout=2s --retries=20 CMD /healthcheck.sh || exit 1 diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 deleted file mode 100644 index 5450840..0000000 --- a/Dockerfile.arm64 +++ /dev/null @@ -1,61 +0,0 @@ -FROM ubuntu:20.04 - -ARG S6_OVERLAY_VERSION=v2.2.0.3 -ARG S6_OVERLAY_ARCH=aarch64 -ARG PLEX_BUILD=linux-aarch64 -ARG PLEX_DISTRO=debian -ARG DEBIAN_FRONTEND="noninteractive" -ENV TERM="xterm" LANG="C.UTF-8" LC_ALL="C.UTF-8" - -ENTRYPOINT ["/init"] - -RUN \ -# Update and get dependencies - apt-get update && \ - apt-get install -y \ - tzdata \ - curl \ - xmlstarlet \ - uuid-runtime \ - unrar \ - && \ - \ -# Fetch and extract S6 overlay - curl -J -L -o /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz https://github.com/just-containers/s6-overlay/releases/download/${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz && \ - tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C / --exclude='./bin' && \ - tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C /usr ./bin && \ - \ -# Add user - useradd -U -d /config -s /bin/false plex && \ - usermod -G users plex && \ - \ -# Setup directories - mkdir -p \ - /config \ - /transcode \ - /data \ - && \ - \ -# Cleanup - apt-get -y autoremove && \ - apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /tmp/* && \ - rm -rf /var/tmp/* - -EXPOSE 32400/tcp 8324/tcp 32469/tcp 1900/udp 32410/udp 32412/udp 32413/udp 32414/udp -VOLUME /config /transcode - -ENV CHANGE_CONFIG_DIR_OWNERSHIP="true" \ - HOME="/config" - -ARG TAG=beta -ARG URL= - -COPY root/ / - -RUN \ -# Save version and install - /installBinary.sh - -HEALTHCHECK --interval=5s --timeout=2s --retries=20 CMD /healthcheck.sh || exit 1 diff --git a/Dockerfile.armv7 b/Dockerfile.armv7 deleted file mode 100644 index 043a4aa..0000000 --- a/Dockerfile.armv7 +++ /dev/null @@ -1,61 +0,0 @@ -FROM ubuntu:20.04 - -ARG S6_OVERLAY_VERSION=v2.2.0.3 -ARG S6_OVERLAY_ARCH=armhf -ARG PLEX_BUILD=linux-armv7hf_neon -ARG PLEX_DISTRO=debian -ARG DEBIAN_FRONTEND="noninteractive" -ENV TERM="xterm" LANG="C.UTF-8" LC_ALL="C.UTF-8" - -ENTRYPOINT ["/init"] - -RUN \ -# Update and get dependencies - apt-get update && \ - apt-get install -y \ - tzdata \ - curl \ - xmlstarlet \ - uuid-runtime \ - unrar \ - && \ - \ -# Fetch and extract S6 overlay - curl -J -L -o /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz https://github.com/just-containers/s6-overlay/releases/download/${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz && \ - tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C / --exclude='./bin' && \ - tar xzf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz -C /usr ./bin && \ - \ -# Add user - useradd -U -d /config -s /bin/false plex && \ - usermod -G users plex && \ - \ -# Setup directories - mkdir -p \ - /config \ - /transcode \ - /data \ - && \ - \ -# Cleanup - apt-get -y autoremove && \ - apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /tmp/* && \ - rm -rf /var/tmp/* - -EXPOSE 32400/tcp 8324/tcp 32469/tcp 1900/udp 32410/udp 32412/udp 32413/udp 32414/udp -VOLUME /config /transcode - -ENV CHANGE_CONFIG_DIR_OWNERSHIP="true" \ - HOME="/config" - -ARG TAG=beta -ARG URL= - -COPY root/ / - -RUN \ -# Save version and install - /installBinary.sh - -HEALTHCHECK --interval=5s --timeout=2s --retries=20 CMD /healthcheck.sh || exit 1 diff --git a/root/installBinary.sh b/root/installBinary.sh index a3a62a4..b3d2ba3 100755 --- a/root/installBinary.sh +++ b/root/installBinary.sh @@ -2,6 +2,15 @@ . /plex-common.sh +PLEX_BUILD='' +if [ "${TARGETPLATFORM}" = 'linux/arm/v7' ]; then + PLEX_BUILD='linux-armv7hf_neon' +elif [ "${TARGETARCH}" = 'amd64' ]; then + PLEX_BUILD='linux-x86_64'; +elif [ "${TARGETARCH}" = 'arm64' ]; then + PLEX_BUILD='aarch64' ; +fi + addVarToConf "version" "${TAG}" addVarToConf "plex_build" "${PLEX_BUILD}" addVarToConf "plex_distro" "${PLEX_DISTRO}" @@ -16,7 +25,7 @@ elif [ "${TAG}" != "beta" ] && [ "${TAG}" != "public" ]; then echo "Could not get install version" exit 1 fi - + echo "Attempting to install: ${remoteVersion}" installFromUrl "${remoteFile}" fi