diff --git a/Dockerfile b/Dockerfile index 97313b28e..eeabd6e44 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,52 +18,11 @@ WORKDIR /rootfs FROM base AS nginx ARG DEBIAN_FRONTEND -ARG NGINX_VERSION=1.22.1 -ARG VOD_MODULE_VERSION=1.30 -ARG SECURE_TOKEN_MODULE_VERSION=1.4 -ARG RTMP_MODULE_VERSION=1.2.1 -RUN cp /etc/apt/sources.list /etc/apt/sources.list.d/sources-src.list \ - && sed -i 's|deb http|deb-src http|g' /etc/apt/sources.list.d/sources-src.list \ - && apt-get update - -RUN apt-get -yqq build-dep nginx - -RUN apt-get -yqq install --no-install-recommends ca-certificates wget \ - && update-ca-certificates -f \ - && mkdir /tmp/nginx \ - && wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ - && tar -zxf nginx-${NGINX_VERSION}.tar.gz -C /tmp/nginx --strip-components=1 \ - && rm nginx-${NGINX_VERSION}.tar.gz \ - && mkdir /tmp/nginx-vod-module \ - && wget https://github.com/kaltura/nginx-vod-module/archive/refs/tags/${VOD_MODULE_VERSION}.tar.gz \ - && tar -zxf ${VOD_MODULE_VERSION}.tar.gz -C /tmp/nginx-vod-module --strip-components=1 \ - && rm ${VOD_MODULE_VERSION}.tar.gz \ - # Patch MAX_CLIPS to allow more clips to be added than the default 128 - && sed -i 's/MAX_CLIPS (128)/MAX_CLIPS (1080)/g' /tmp/nginx-vod-module/vod/media_set.h \ - && mkdir /tmp/nginx-secure-token-module \ - && wget https://github.com/kaltura/nginx-secure-token-module/archive/refs/tags/${SECURE_TOKEN_MODULE_VERSION}.tar.gz \ - && tar -zxf ${SECURE_TOKEN_MODULE_VERSION}.tar.gz -C /tmp/nginx-secure-token-module --strip-components=1 \ - && rm ${SECURE_TOKEN_MODULE_VERSION}.tar.gz \ - && mkdir /tmp/nginx-rtmp-module \ - && wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v${RTMP_MODULE_VERSION}.tar.gz \ - && tar -zxf v${RTMP_MODULE_VERSION}.tar.gz -C /tmp/nginx-rtmp-module --strip-components=1 \ - && rm v${RTMP_MODULE_VERSION}.tar.gz - -WORKDIR /tmp/nginx - -RUN ./configure --prefix=/usr/local/nginx \ - --with-file-aio \ - --with-http_sub_module \ - --with-http_ssl_module \ - --with-threads \ - --add-module=../nginx-vod-module \ - --add-module=../nginx-secure-token-module \ - --add-module=../nginx-rtmp-module \ - --with-cc-opt="-O3 -Wno-error=implicit-fallthrough" - -RUN make && make install -RUN rm -rf /usr/local/nginx/html /usr/local/nginx/conf/*.default +# bind /var/cache/apt to tmpfs to speed up nginx build +RUN --mount=type=tmpfs,target=/tmp --mount=type=tmpfs,target=/var/cache/apt \ + --mount=type=bind,source=docker/build_nginx.sh,target=/deps/build_nginx.sh \ + /deps/build_nginx.sh FROM wget AS go2rtc ARG TARGETARCH diff --git a/docker/build_nginx.sh b/docker/build_nginx.sh new file mode 100755 index 000000000..ca28bd257 --- /dev/null +++ b/docker/build_nginx.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -euxo pipefail + +NGINX_VERSION="1.22.1" +VOD_MODULE_VERSION="1.30" +SECURE_TOKEN_MODULE_VERSION="1.4" +RTMP_MODULE_VERSION="1.2.1" + +cp /etc/apt/sources.list /etc/apt/sources.list.d/sources-src.list +sed -i 's|deb http|deb-src http|g' /etc/apt/sources.list.d/sources-src.list +apt-get update + +apt-get -yqq build-dep nginx + +apt-get -yqq install --no-install-recommends ca-certificates wget +update-ca-certificates -f +mkdir /tmp/nginx +wget -nv https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz +tar -zxf nginx-${NGINX_VERSION}.tar.gz -C /tmp/nginx --strip-components=1 +rm nginx-${NGINX_VERSION}.tar.gz +mkdir /tmp/nginx-vod-module +wget -nv https://github.com/kaltura/nginx-vod-module/archive/refs/tags/${VOD_MODULE_VERSION}.tar.gz +tar -zxf ${VOD_MODULE_VERSION}.tar.gz -C /tmp/nginx-vod-module --strip-components=1 +rm ${VOD_MODULE_VERSION}.tar.gz + # Patch MAX_CLIPS to allow more clips to be added than the default 128 +sed -i 's/MAX_CLIPS (128)/MAX_CLIPS (1080)/g' /tmp/nginx-vod-module/vod/media_set.h +mkdir /tmp/nginx-secure-token-module +wget https://github.com/kaltura/nginx-secure-token-module/archive/refs/tags/${SECURE_TOKEN_MODULE_VERSION}.tar.gz +tar -zxf ${SECURE_TOKEN_MODULE_VERSION}.tar.gz -C /tmp/nginx-secure-token-module --strip-components=1 +rm ${SECURE_TOKEN_MODULE_VERSION}.tar.gz +mkdir /tmp/nginx-rtmp-module +wget -nv https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v${RTMP_MODULE_VERSION}.tar.gz +tar -zxf v${RTMP_MODULE_VERSION}.tar.gz -C /tmp/nginx-rtmp-module --strip-components=1 +rm v${RTMP_MODULE_VERSION}.tar.gz + +cd /tmp/nginx + +./configure --prefix=/usr/local/nginx \ + --with-file-aio \ + --with-http_sub_module \ + --with-http_ssl_module \ + --with-threads \ + --add-module=../nginx-vod-module \ + --add-module=../nginx-secure-token-module \ + --add-module=../nginx-rtmp-module \ + --with-cc-opt="-O3 -Wno-error=implicit-fallthrough" + +make -j$(nproc) && make install +rm -rf /usr/local/nginx/html /usr/local/nginx/conf/*.default \ No newline at end of file