diff --git a/docker/Dockerfile b/docker/Dockerfile.base similarity index 50% rename from docker/Dockerfile rename to docker/Dockerfile.base index 1d7dd86..f475f17 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile.base @@ -1,18 +1,15 @@ FROM lsiobase/ubuntu:focal -ARG VERSION -ARG MODULE - ENV \ LIBVA_DRIVERS_PATH="/usr/lib/x86_64-linux-gnu/dri" \ LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu" \ NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \ NVIDIA_VISIBLE_DEVICES="all" \ - HANDBRAKE=1.5.1 + HANDBRAKE=1.6.1 ENV WEB_UI_PORT="8265" SERVER_PORT="8266" NODE_PORT="8267" PUID="1000" PGID="1000" UMASK="002" TZ="Etc/UTC" HOME="/home/Tdarr" -COPY root/ / +COPY docker/root/ / # handle deps RUN apt-get update && \ @@ -25,24 +22,57 @@ RUN apt-get update && \ /logs \ /temp \ "${HOME}" && \ - useradd -u ${PUID} -U -d ${HOME} -s /bin/false Tdarr && \ - usermod -G users Tdarr && \ + # useradd -u ${PUID} -U -d ${HOME} -s /bin/false Tdarr && \ + # usermod -G users Tdarr && \ - apt-get update && apt-get install -y curl unzip mkvtoolnix libtesseract-dev && \ - if uname -m | grep -q x86; then \ + apt-get update && \ + apt-get install -y curl unzip mkvtoolnix && \ + #cc-extractor + apt-get install -y \ + cargo \ + libglew-dev \ + libglfw3-dev \ + cmake \ + gcc \ + libcurl4-gnutls-dev \ + tesseract-ocr \ + libtesseract-dev \ + libleptonica-dev \ + clang \ + libclang-dev && \ + git clone https://github.com/CCExtractor/ccextractor.git && \ + cd ccextractor/linux && \ + ./build -without-rust && \ + mv ./ccextractor /usr/bin/ccextractor && \ + + cd / && rm -rf /ccextractor && \ + if uname -m | grep -q x86; then \ + + # b + apt-get install -y gpg-agent wget && \ + wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | \ + gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg && \ + echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu focal-legacy main' | \ + tee /etc/apt/sources.list.d/intel.gpu.focal.list && \ + # FFmpeg apt install -y wget && \ - wget https://repo.jellyfin.org/releases/server/ubuntu/versions/jellyfin-ffmpeg/4.3.2-1/jellyfin-ffmpeg_4.3.2-1-focal_amd64.deb && \ + wget https://repo.jellyfin.org/releases/server/ubuntu/versions/jellyfin-ffmpeg/6.0-1/jellyfin-ffmpeg6_6.0-1-focal_amd64.deb && \ apt install -y \ - ./jellyfin-ffmpeg_4.3.2-1-focal_amd64.deb && \ + ./jellyfin-ffmpeg6_6.0-1-focal_amd64.deb && \ + rm -rf ./jellyfin-ffmpeg6_6.0-1-focal_amd64.deb && \ ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/local/bin/ffmpeg && \ ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/local/bin/tdarr-ffmpeg && \ # apt-get install -y ffmpeg && \ - # Intel deps - curl -s https://repositories.intel.com/graphics/intel-graphics.key | apt-key add - && \ - echo 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main' > /etc/apt/sources.list.d/intel-graphics.list && \ apt-get update && \ + + # b + apt-get install -y \ + intel-opencl-icd \ + intel-level-zero-gpu level-zero \ + intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 && \ + apt-get install -y --no-install-recommends \ intel-media-va-driver-non-free \ vainfo \ @@ -90,7 +120,9 @@ RUN apt-get update && \ tar \ zlib1g-dev \ libva-dev \ - libdrm-dev && \ + libdrm-dev \ + libmfx-dev \ + libmfx1 && \ rm -rdf /tmp/handbrake && \ mkdir -p /tmp/handbrake && \ @@ -118,55 +150,4 @@ RUN apt-get update && \ if uname -m | grep -q armv7l; then \ apt-get install -y handbrake-cli ffmpeg && \ ln -s /usr/bin/ffmpeg /usr/local/bin/tdarr-ffmpeg ; \ - fi - -# handle tdarr binaries -RUN if [ "$MODULE" = "Tdarr_Node" ]; then \ - echo removing /tdarr_server && \ - rm -rdf /etc/services.d/tdarr_server ; \ - fi && \ - - apt-get update && apt-get install -y curl unzip mkvtoolnix libtesseract-dev && \ - if uname -m | grep -q x86; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/$MODULE.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_x64/$MODULE.zip" && \ - unzip -q /tmp/$MODULE.zip -d /app/$MODULE -x *.exe && \ - - if [ "$MODULE" = "Tdarr_Server" ]; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/Tdarr_Node.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_x64/Tdarr_Node.zip" && \ - unzip -q /tmp/Tdarr_Node.zip -d /app/Tdarr_Node -x *.exe ; \ - fi ; \ - fi && \ - if uname -m | grep -q aarch64; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/$MODULE.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_arm64/$MODULE.zip" && \ - unzip -q /tmp/$MODULE.zip -d /app/$MODULE -x *.exe && \ - - if [ "$MODULE" = "Tdarr_Server" ]; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/Tdarr_Node.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_arm64/Tdarr_Node.zip" && \ - unzip -q /tmp/Tdarr_Node.zip -d /app/Tdarr_Node -x *.exe ; \ - fi ; \ - fi && \ - if uname -m | grep -q armv7l; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/$MODULE.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_arm/$MODULE.zip" && \ - unzip -q /tmp/$MODULE.zip -d /app/$MODULE -x *.exe && \ - - if [ "$MODULE" = "Tdarr_Server" ]; then \ - curl --connect-timeout 120 --retry 5 -o /tmp/Tdarr_Node.zip -L \ - "https://tdarrs.s3.us-west-000.backblazeb2.com/versions/$VERSION/linux_arm/Tdarr_Node.zip" && \ - unzip -q /tmp/Tdarr_Node.zip -d /app/Tdarr_Node -x *.exe ; \ - fi ; \ - fi && \ - - rm -rdf /tmp/$MODULE.zip && \ - rm -rdf /tmp/Tdarr_Node.zip && \ - trash-empty && \ - apt-get autoremove -y - -EXPOSE ${NODE_PORT} -EXPOSE ${WEB_UI_PORT} -EXPOSE ${SERVER_PORT} -ENTRYPOINT ["/init"] \ No newline at end of file + fi \ No newline at end of file diff --git a/docker/Dockerfile.final b/docker/Dockerfile.final new file mode 100644 index 0000000..b800499 --- /dev/null +++ b/docker/Dockerfile.final @@ -0,0 +1,65 @@ +ARG VERSION +ARG DATE + +FROM docker.io/haveagitgat/tdarr_acc:base_${VERSION}_${DATE} + +ARG VERSION +ARG MODULE +ARG DATE + +ENV WEB_UI_PORT="8265" SERVER_PORT="8266" NODE_PORT="8267" PUID="1000" PGID="1000" UMASK="002" TZ="Etc/UTC" HOME="/home/Tdarr" + + +ENV MODULE_LINK="" +ENV NODE_LINK="" +ENV BASE_LINK="https://tdarrs.s3.us-west-000.backblazeb2.com/dev/versions/$VERSION" +ENV inContainer="true" + +# handle tdarr binaries +RUN echo $MODULE && echo $VERSION && echo $DATE && \ + if [ "$MODULE" = "Tdarr_Node" ]; then \ + echo removing /tdarr_server && \ + rm -rdf /etc/services.d/tdarr_server ; \ + fi && \ + + apt-get update && apt-get install -y curl unzip mkvtoolnix libtesseract-dev && \ + if uname -m | grep -q x86; then \ + MODULE_LINK="${BASE_LINK}/linux_x64/${MODULE}_$DATE.zip" && \ + NODE_LINK="${BASE_LINK}/linux_x64/Tdarr_Node_$DATE.zip" ; \ + fi && \ + if uname -m | grep -q aarch64; then \ + MODULE_LINK="${BASE_LINK}/linux_arm64/${MODULE}_$DATE.zip" && \ + NODE_LINK="${BASE_LINK}/linux_arm64/Tdarr_Node_$DATE.zip" ; \ + fi && \ + if uname -m | grep -q armv7l; then \ + MODULE_LINK="${BASE_LINK}/linux_arm/${MODULE}_$DATE.zip" && \ + NODE_LINK="${BASE_LINK}/linux_arm/Tdarr_Node_$DATE.zip" ; \ + fi && \ + + echo MODULE_LINK=$MODULE_LINK && \ + echo NODE_Link=$NODE_LINK && \ + curl --connect-timeout 120 --retry 5 -o /tmp/$MODULE.zip -L \ + "$MODULE_LINK" && \ + unzip -q /tmp/$MODULE.zip -d /app/$MODULE -x *.exe && \ + if [ "$MODULE" = "Tdarr_Server" ]; then \ + curl --connect-timeout 120 --retry 5 -o /tmp/Tdarr_Node.zip -L \ + "$NODE_LINK" && \ + unzip -q /tmp/Tdarr_Node.zip -d /app/Tdarr_Node -x *.exe ; \ + fi && \ + rm -rdf /tmp/$MODULE.zip && \ + rm -rdf /tmp/Tdarr_Node.zip && \ + + cp -r /app /app_test && \ + runTests=true runDockerTests=true /app_test/$MODULE/$MODULE && \ + if [ "$MODULE" = "Tdarr_Server" ]; then \ + runTests=true runDockerTests=true /app_test/Tdarr_Node/Tdarr_Node ; \ + fi && \ + rm -rdf /app_test && \ + + trash-empty && \ + apt-get autoremove -y + +EXPOSE ${NODE_PORT} +EXPOSE ${WEB_UI_PORT} +EXPOSE ${SERVER_PORT} +ENTRYPOINT ["/init"] \ No newline at end of file