diff --git a/Dockerfile b/Dockerfile index 3475f3f..908dda5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,50 +1,13 @@ FROM node:12.18-alpine3.12 -# Should be ffmpeg v4.2.3 - -ARG LIBDAV1D_VERSION=0.7.1 -ARG LIBDAV1D_URL="https://code.videolan.org/videolan/dav1d/-/archive/$LIBDAV1D_VERSION/dav1d-$LIBDAV1D_VERSION.tar.gz" - -RUN apk add --update \ - curl nasm yasm build-base gcc zlib-dev libc-dev openssl-dev yasm-dev lame-dev libogg-dev x264-dev libvpx-dev libvorbis-dev x265-dev freetype-dev libass-dev libwebp-dev rtmpdump-dev libtheora-dev opus-dev meson ninja && \ - wget -O dav1d.tar.gz "$LIBDAV1D_URL" && \ - tar xfz dav1d.tar.gz && \ - cd dav1d-* && meson build --buildtype release -Ddefault_library=static && ninja -C build install && \ - DIR=$(mktemp -d) && cd ${DIR} && \ - curl -s http://ffmpeg.org/releases/ffmpeg-4.2.3.tar.gz | tar zxvf - -C . && \ - cd ffmpeg-4.2.3 && \ - ./configure \ - --enable-version3 \ - --enable-gpl \ - --enable-nonfree \ - --enable-small \ - --enable-libmp3lame \ - --enable-libx264 \ - --enable-libdav1d \ - --enable-libx265 \ - --enable-libvpx \ - --enable-libtheora \ - --enable-libvorbis \ - --enable-libopus \ - --enable-libass \ - --enable-libwebp \ - --enable-librtmp \ - --enable-postproc \ - --enable-avresample \ - --enable-libfreetype \ - --enable-openssl \ - --enable-filter=drawtext \ - --disable-debug && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} && \ - mv /usr/local/bin/ffmpeg /usr/bin/ffmpeg && \ - apk del build-base curl tar bzip2 x264 openssl nasm openssl xz gnupg && rm -rf /v WORKDIR /home/node/app COPY package*.json ./ -RUN npm install -RUN npm install -g browserify nexe -EXPOSE 8000 -CMD [ "npm", "start"] +RUN npm install && npm install -g browserify nexe@3.3.7 COPY . . -RUN npm run build +RUN npm run build && LINUXBUILD=dizquetv sh make_dist.sh linuxonly + +FROM jrottenberg/ffmpeg:4.2-ubuntu1804 +EXPOSE 8000 +WORKDIR /home/node/app +ENTRYPOINT [ "./dizquetv" ] +COPY --from=0 /home/node/app/dist/dizquetv /home/node/app/ +RUN ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg diff --git a/Dockerfile-nvidia b/Dockerfile-nvidia index ca538d0..20a8e20 100644 --- a/Dockerfile-nvidia +++ b/Dockerfile-nvidia @@ -1,60 +1,13 @@ FROM node:12.18-alpine3.12 -# Should be ffmpeg v4.2.3 - -ARG LIBDAV1D_VERSION=0.7.1 -ARG LIBDAV1D_URL="https://code.videolan.org/videolan/dav1d/-/archive/$LIBDAV1D_VERSION/dav1d-$LIBDAV1D_VERSION.tar.gz" - -RUN apk add --update \ - curl nasm yasm build-base gcc zlib-dev libc-dev openssl-dev yasm-dev lame-dev libogg-dev x264-dev libvpx-dev libvorbis-dev x265-dev freetype-dev libass-dev libwebp-dev rtmpdump-dev libtheora-dev opus-dev meson ninja && \ - wget -O dav1d.tar.gz "$LIBDAV1D_URL" && \ - tar xfz dav1d.tar.gz && \ - cd dav1d-* && meson build --buildtype release -Ddefault_library=static && ninja -C build install && \ - DIR=$(mktemp -d) && cd ${DIR} && \ - curl -s http://ffmpeg.org/releases/ffmpeg-4.2.3.tar.gz | tar zxvf - -C . && \ - cd ffmpeg-4.2.3 && \ - ./configure \ - --enable-version3 \ - --enable-gpl \ - --enable-nonfree \ - --enable-small \ - --enable-libmp3lame \ - --enable-libx264 \ - --enable-libdav1d \ - --enable-libx265 \ - --enable-libvpx \ - --enable-libtheora \ - --enable-libvorbis \ - --enable-libopus \ - --enable-libass \ - --enable-libwebp \ - --enable-librtmp \ - --enable-postproc \ - --enable-avresample \ - --enable-libfreetype \ - --enable-openssl \ - --enable-filter=drawtext \ - --disable-debug && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} && \ - mv /usr/local/bin/ffmpeg /usr/bin/ffmpeg && \ - apk del build-base curl tar bzip2 x264 openssl nasm openssl xz gnupg && rm -rf /v WORKDIR /home/node/app COPY package*.json ./ -RUN npm install -RUN npm install -g browserify nexe -EXPOSE 8000 -CMD [ "npm", "start"] +RUN npm install && npm install -g browserify nexe@3.3.7 COPY . . -RUN npm run build && sh make_dist.sh - +RUN npm run build && LINUXBUILD=dizquetv sh make_dist.sh linuxonly FROM jrottenberg/ffmpeg:4.2-nvidia -RUN ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg && mkdir -p /home/node/app/ -COPY --from=0 /home/node/app/dist/dizquetv-linux-x64 /home/node/app/ +EXPOSE 8000 WORKDIR /home/node/app -ENTRYPOINT [ "./dizquetv-linux-x64" ] - - - +ENTRYPOINT [ "./dizquetv" ] +COPY --from=0 /home/node/app/dist/dizquetv /home/node/app/ +RUN ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg diff --git a/make_dist.sh b/make_dist.sh index 3210017..21767e5 100644 --- a/make_dist.sh +++ b/make_dist.sh @@ -1,8 +1,9 @@ #!/bin/sh +MODE=${1:-all} WIN64=dizquetv-win-x64.exe WIN32=dizquetv-win-x86.exe MACOSX=dizquetv-macos-x64 -LINUX64=dizquetv-linux-x64 +LINUX64=${LINUXBUILD:-dizquetv-linux-x64} rm -R ./dist/* npm run build @@ -10,18 +11,23 @@ npm run compile cp -R ./web ./dist/web cp -R ./resources ./dist/ cd dist -nexe -r "./**/*" -t windows-x64-12.18.2 --output $WIN64 -mv $WIN64 ../ -nexe -r "./**/*" -t linux-x64-12.16.2 --output $LINUX64 -mv $LINUX64 ../ -nexe -r "./**/*" -t mac-x64-12.18.2 --output $MACOSX -mv $MACOSX ../ -nexe -r "./**/*" -t windows-x86-12.18.2 --output $WIN32 -mv ../$WIN64 ./ -mv ../$LINUX64 ./ -mv ../$MACOSX ./ -echo dist/$WIN64 -echo dist/$LINUX64 -echo dist/$MACOSX -echo dist/$WIN32 +if [ "$MODE" == "all" ]; then + nexe -r "./**/*" -t windows-x64-12.18.2 --output $WIN64 + mv $WIN64 ../ + nexe -r "./**/*" -t mac-x64-12.18.2 --output $MACOSX + mv $MACOSX ../ + nexe -r "./**/*" -t windows-x86-12.18.2 --output $WIN32 + mv $WIN32 ../ +fi + +nexe -r "./**/*" -t linux-x64-12.16.2 --output $LINUX64 || exit 1 +echo dist/$LINUX64 +if [ "$MODE" == "all" ]; then + mv ../$WIN64 ./ + mv ../$WIN32 ./ + mv ../$MACOSX ./ + echo dist/$WIN64 + echo dist/$MACOSX + echo dist/$WIN32 +fi