diff --git a/.drone.yml b/.drone.yml index 50048c2..0cd99f4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,30 +1,21 @@ pipeline: - identify: - image: docker - commands: - # Grab the current version, prevents race conditions - - apk add --no-cache openssl jq - - wget -qO- https://spritsail.io/plex/release.php?pass | tee .plex_release - - jq -r '.["url-deb"]' .plex_release > .plex_url - - jq -r '.["version"]' .plex_release > .plex_version - - jq -r '.["csum-deb"]' .plex_release > .plex_checksum - - jq -r '.["version"]' .plex_release | cut -d- -f1 > .plex_tag - build: image: spritsail/docker-build volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] repo: ppass-dev - build_args: - - 'PLEX_URL=%file: .plex_url' - - 'PLEX_VER=%file: .plex_version' - - 'PLEX_SHA=%file: .plex_checksum' + + tag: + image: docker + volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] + commands: + - docker inspect -f '{{ index .Config.Labels "io.spritsail.version.plex" }}' ppass-dev | cut -d- -f1 > .plex_tag test: image: docker volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] commands: - apk add --no-cache curl xmlstarlet grep - - export CUR_VERSION="$(cat .plex_version)" + - export CUR_VERSION="$(cat .plex_tag)" - CON_NAME=$(docker run --rm -d ppass-dev) - timeout -t 15 docker logs $$CON_NAME & - sleep 10 # Wait for plex to start! diff --git a/Dockerfile b/Dockerfile index 4ca42b2..77448f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,49 +1,65 @@ -FROM spritsail/busybox:libressl - -ARG PLEX_VER=latest -ARG PLEX_URL -ARG PLEX_SHA +ARG PLEX_VER=1.13.3.5223-cd1e0da1b +ARG PLEX_SHA=21524a2e329a9610ce647278b99c0e0177e87d5b ARG LIBSTDCPP_VER=6.3.0-18+deb9u1 ARG LIBGCC1_VER=6.3.0-18+deb9u1 +FROM spritsail/debian-builder:stretch-slim as builder + +ARG PLEX_VER +ARG PLEX_SHA +ARG LIBSTDCPP_VER +ARG LIBGCC1_VER + +WORKDIR /tmp + +RUN mkdir -p /output/usr/lib /output/{lib, sbin} + +RUN curl -fsSL -o libstdcpp.deb http://ftp.de.debian.org/debian/pool/main/g/gcc-${LIBSTDCPP_VER:0:1}/libstdc++6_${LIBSTDCPP_VER}_amd64.deb \ + && curl -fsSL -o libgcc1.deb http://ftp.de.debian.org/debian/pool/main/g/gcc-${LIBGCC1_VER:0:1}/libgcc1_${LIBGCC1_VER}_amd64.deb \ + && dpkg-deb -x libstdcpp.deb . \ + && dpkg-deb -x libgcc1.deb . \ + # We only need the lib files, everything else is debian junk. + && mv $PWD/usr/lib/x86_64-linux-gnu/* /output/usr/lib \ + # Maybe /lib + && mv $PWD/lib/x86_64-linux-gnu/* /output/usr/lib + +RUN curl -fsSL -o plexmediaserver.deb https://downloads.plex.tv/plex-media-server/${PLEX_VER}/plexmediaserver_${PLEX_VER}_amd64.deb \ + && echo "$PLEX_SHA plexmediaserver.deb" | sha1sum -c - \ + && dpkg-deb -x plexmediaserver.deb . \ + && mv usr/lib/plexmediaserver /output/usr/lib + + +ADD start_pms /output/usr/sbin/start_pms +RUN chmod +x /output/usr/sbin/start_pms + +#========================= + +FROM spritsail/libressl + +ARG PLEX_VER +ARG LIBSTDCPP_VER +ARG LIBGCC1_VER + LABEL maintainer="Spritsail " \ org.label-schema.vendor="Spritsail" \ org.label-schema.name="Plex Media Server" \ org.label-schema.url="https://www.plex.tv/downloads/" \ - org.label-schema.description="Tiny Docker image for Plex Media Server, built on spritsail/busybox" \ - org.label-schema.version=$PLEX_VER + org.label-schema.description="Tiny Docker image for Plex Media Server, built on busybox" \ + org.label-schema.version=${PLEX_VER} \ + io.spritsail.version.plex=${PLEX_VER} \ + io.spritsail.version.libstdcpp=${LIBSTDCPP_VER} \ + io.spritsail.version.libgcc1=${LIBGCC1_VER} ENV SUID=900 SGID=900 -ADD start_pms /usr/sbin/start_pms -WORKDIR /tmp - -RUN chmod +x /usr/sbin/start_pms \ - && wget http://ftp.de.debian.org/debian/pool/main/g/gcc-${LIBSTDCPP_VER:0:1}/libstdc++6_${LIBSTDCPP_VER}_amd64.deb \ - && wget http://ftp.de.debian.org/debian/pool/main/g/gcc-${LIBGCC1_VER:0:1}/libgcc1_${LIBGCC1_VER}_amd64.deb \ - && dpkg-deb -x libstdc++6*.deb . \ - && dpkg-deb -x libgcc1*.deb . \ - # We only need the lib files, everything else is debian junk. - && mv $PWD/usr/lib/x86_64-linux-gnu/* /lib \ - && mv $PWD/lib/x86_64-linux-gnu/* /lib \ - \ - && if [ "$PLEX_VER" == "latest" -o -z "$PLEX_URL" ]; then \ - export PLEX_VER="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=version)"; \ - export PLEX_URL="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=url-deb)"; \ - export PLEX_SHA="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=csum-deb)"; \ - fi \ - && echo "$PLEX_SHA plexmediaserver.deb" > sumfile \ - && wget -O plexmediaserver.deb "$PLEX_URL" \ - && sha1sum -c sumfile \ - \ - && dpkg-deb -x plexmediaserver.deb . \ - && mv usr/lib/plexmediaserver /usr/lib \ - && find $PWD -mindepth 1 -delete +COPY --from=builder /output/ / HEALTHCHECK --interval=10s --timeout=5s \ CMD [ "wget", "-O", "/dev/null", "-T", "10", "-q", "localhost:32400/identity" ] WORKDIR /usr/lib/plexmediaserver +EXPOSE 32400 + ENTRYPOINT ["/sbin/tini", "--"] -CMD ["start_pms"] +CMD ["/usr/sbin/start_pms"]