mirror of
https://github.com/datarhei/restreamer.git
synced 2025-12-11 22:14:02 +01:00
147 lines
3.9 KiB
Plaintext
147 lines
3.9 KiB
Plaintext
ARG IMAGE=arm64v8/debian:10.4-slim
|
|
|
|
FROM $IMAGE as builder
|
|
|
|
MAINTAINER datarhei <info@datarhei.org>
|
|
|
|
ARG LAME_VERSION=3.100
|
|
ARG FFMPEG_VERSION=4.3.1
|
|
ARG NGINX_VERSION=1.18.0
|
|
ARG NGINXRTMP_VERSION=1.2.1
|
|
ARG NODE_VERSION=16.9.1
|
|
|
|
ENV SRC="/usr/local/" \
|
|
LD_LIBRARY_PATH="/usr/local/lib" \
|
|
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
pkg-config \
|
|
curl \
|
|
libpcre3-dev \
|
|
libtool \
|
|
libssl-dev \
|
|
zlib1g-dev \
|
|
libasound2-dev \
|
|
build-essential
|
|
|
|
# x264
|
|
RUN mkdir -p /dist && cd /dist && \
|
|
curl -OL https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.bz2 && \
|
|
tar -xvj -f x264-stable.tar.bz2 && \
|
|
cd x264-stable && \
|
|
./configure --prefix="${SRC}" --bindir="${SRC}/bin" --enable-shared && \
|
|
make -j$(nproc) && \
|
|
make install
|
|
|
|
# libmp3lame
|
|
RUN mkdir -p /dist && cd /dist && \
|
|
curl -OL "https://downloads.sourceforge.net/project/lame/lame/${LAME_VERSION}/lame-${LAME_VERSION}.tar.gz" && \
|
|
tar -xvz -f lame-${LAME_VERSION}.tar.gz && \
|
|
cd lame-${LAME_VERSION} && \
|
|
./configure --prefix="${SRC}" --bindir="${SRC}/bin" --disable-static && \
|
|
make -j$(nproc) && \
|
|
make install
|
|
|
|
# ffmpeg && patch
|
|
COPY ./contrib/ffmpeg /dist/restreamer/contrib/ffmpeg
|
|
|
|
RUN mkdir -p /dist && cd /dist && \
|
|
curl -OL "https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz" && \
|
|
tar -xvz -f ffmpeg-${FFMPEG_VERSION}.tar.gz && \
|
|
cd ffmpeg-${FFMPEG_VERSION} && \
|
|
patch -p1 < /dist/restreamer/contrib/ffmpeg/bitrate.patch && \
|
|
./configure \
|
|
--bindir="${SRC}/bin" \
|
|
--extra-cflags="-I${SRC}/include" \
|
|
--extra-ldflags="-L${SRC}/lib" \
|
|
--prefix="${SRC}" \
|
|
--enable-nonfree \
|
|
--enable-gpl \
|
|
--enable-version3 \
|
|
--enable-libmp3lame \
|
|
--enable-libx264 \
|
|
--enable-openssl \
|
|
--enable-postproc \
|
|
--enable-small \
|
|
--enable-static \
|
|
--disable-debug \
|
|
--disable-doc \
|
|
--disable-shared && \
|
|
make -j$(nproc) && \
|
|
make install
|
|
|
|
# nginx-rtmp
|
|
RUN mkdir -p /dist && cd /dist && \
|
|
curl -OL "https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz" && \
|
|
tar -xvz -f "nginx-${NGINX_VERSION}.tar.gz" && \
|
|
curl -OL "https://github.com/arut/nginx-rtmp-module/archive/v${NGINXRTMP_VERSION}.tar.gz" && \
|
|
tar -xvz -f "v${NGINXRTMP_VERSION}.tar.gz" && \
|
|
sed -i"" -e '/case ESCAPE:/i /* fall through */' nginx-rtmp-module-${NGINXRTMP_VERSION}/ngx_rtmp_eval.c && \
|
|
cd nginx-${NGINX_VERSION} && \
|
|
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --add-module=/dist/nginx-rtmp-module-${NGINXRTMP_VERSION} && \
|
|
make -j$(nproc) && \
|
|
make install
|
|
|
|
# node.js
|
|
RUN mkdir -p /dist && cd /dist && \
|
|
curl -OL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-arm64.tar.xz" && \
|
|
tar -xvJ -f "node-v${NODE_VERSION}-linux-arm64.tar.xz" && \
|
|
cd node-v${NODE_VERSION}-linux-arm64 && \
|
|
cp -R bin /usr/local && \
|
|
cp -R lib /usr/local
|
|
|
|
RUN rm -r /dist && \
|
|
apt-get remove -y \
|
|
pkg-config \
|
|
curl \
|
|
libpcre3-dev \
|
|
libtool \
|
|
libssl-dev \
|
|
zlib1g-dev \
|
|
build-essential && \
|
|
apt autoremove -y
|
|
|
|
FROM $IMAGE
|
|
|
|
COPY --from=builder /usr/local/bin /usr/local/bin
|
|
COPY --from=builder /usr/local/nginx /usr/local/nginx
|
|
COPY --from=builder /usr/local/lib /usr/local/lib
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
ca-certificates \
|
|
git \
|
|
procps \
|
|
libpcre3 \
|
|
openssl \
|
|
libssl1.1 \
|
|
zlib1g \
|
|
v4l-utils \
|
|
libv4l-0 \
|
|
alsa-utils \
|
|
libatomic1
|
|
|
|
COPY . /restreamer
|
|
WORKDIR /restreamer
|
|
|
|
RUN cd /restreamer && \
|
|
npm install -g grunt-cli nodemon eslint && \
|
|
npm install && \
|
|
grunt build && \
|
|
npm prune --production && \
|
|
npm cache verify && \
|
|
npm uninstall -g grunt-cli nodemon eslint && \
|
|
npm prune --production && \
|
|
apt-get remove -y \
|
|
git \
|
|
curl && \
|
|
apt autoremove -y
|
|
|
|
EXPOSE 8080
|
|
EXPOSE 8181
|
|
|
|
VOLUME ["/restreamer/db"]
|
|
|
|
CMD ["./run.sh"]
|