Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 10.02 KB | None | 0 0
  1. FROM buildpack-deps:stretch
  2.  
  3. RUN sed -i 's/archive.ubuntu.com/mirror.aarnet.edu.au\/pub\/ubuntu\/archive/g' /etc/apt/sources.list
  4.  
  5. RUN rm -rf /var/lib/apt/lists/*
  6. RUN apt-get -y update && apt-get install -y libmicrohttpd-dev \
  7.     libjansson-dev \
  8.     libnice-dev \
  9.     libssl-dev \
  10.     libsrtp-dev \
  11.     libsofia-sip-ua-dev \
  12.     libglib2.0-dev \
  13.     libopus-dev \
  14.     libogg-dev \
  15.     libini-config-dev \
  16.     libcollection-dev \
  17.     libconfig-dev \
  18.     pkg-config \
  19.     gengetopt \
  20.     libtool \
  21.     automake \
  22.     build-essential \
  23.     subversion \
  24.     git \
  25.     cmake \
  26.     unzip \
  27.     zip \
  28.     lsof wget vim sudo rsync cron mysql-client openssh-server supervisor locate
  29.  
  30.  
  31.  
  32. # FFmpeg build section
  33. RUN mkdir ~/ffmpeg_sources
  34.  
  35. RUN apt-get update && \
  36.     apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \
  37.     libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
  38.     libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
  39.  
  40. RUN YASM="1.3.0" && cd ~/ffmpeg_sources && \
  41.     wget http://www.tortall.net/projects/yasm/releases/yasm-$YASM.tar.gz && \
  42.     tar xzvf yasm-$YASM.tar.gz && \
  43.     cd yasm-$YASM && \
  44.     ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"  && \
  45.     make && \
  46.     make install && \
  47.     make distclean
  48.  
  49. RUN VPX="v1.8.1" && cd ~/ffmpeg_sources && \
  50.     wget https://chromium.googlesource.com/webm/libvpx/+archive/$VPX.tar.gz && \
  51.     tar xzvf $VPX.tar.gz && \
  52.     pwd \
  53.     cd $VPX && \
  54.     PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests && \
  55.     PATH="$HOME/bin:$PATH" make && \
  56.     make install && \
  57.     make clean
  58.  
  59.  
  60. RUN OPUS="1.3" && cd ~/ffmpeg_sources && \
  61.     wget http://downloads.xiph.org/releases/opus/opus-$OPUS.tar.gz && \
  62.     tar xzvf opus-$OPUS.tar.gz && \
  63.     cd opus-$OPUS && \
  64.     ./configure --help && \
  65.     ./configure --prefix="$HOME/ffmpeg_build"  && \
  66.     make && \
  67.     make install && \
  68.     make clean
  69.  
  70.  
  71. RUN LAME="3.100" && apt-get install -y nasm  && cd ~/ffmpeg_sources && \
  72.     wget http://downloads.sourceforge.net/project/lame/lame/$LAME/lame-$LAME.tar.gz && \
  73.     tar xzvf lame-$LAME.tar.gz && \
  74.     cd lame-$LAME && \
  75.     ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared && \
  76.     make && \
  77.     make install
  78.  
  79. RUN X264="20181001-2245-stable" && cd ~/ffmpeg_sources && \
  80.     wget http://download.videolan.org/pub/x264/snapshots/x264-snapshot-$X264.tar.bz2 && \
  81.     tar xjvf x264-snapshot-$X264.tar.bz2 && \
  82.     cd x264-snapshot-$X264 && \
  83.     PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --disable-opencl --disable-asm && \
  84.     PATH="$HOME/bin:$PATH" make && \
  85.     make install && \
  86.     make distclean
  87.  
  88. RUN FDK_AAC="2.0.1" && cd ~/ffmpeg_sources && \
  89.     wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/archive/v$FDK_AAC.tar.gz && \
  90.     tar xzvf fdk-aac.tar.gz && \
  91.     cd fdk-aac-$FDK_AAC && \
  92.     autoreconf -fiv && \
  93.     ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
  94.     make && \
  95.     make install && \
  96.     make distclean
  97.  
  98. RUN FFMPEG_VER="n4.2.1" && cd ~/ffmpeg_sources && \
  99.     wget https://github.com/FFmpeg/FFmpeg/archive/$FFMPEG_VER.zip && \
  100.     unzip $FFMPEG_VER.zip
  101.  
  102. RUN FFMPEG_VER="n4.2.1" && cd ~/ffmpeg_sources && \
  103.     cd FFmpeg-$FFMPEG_VER && \
  104.     PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  105.     --prefix="$HOME/ffmpeg_build" \
  106.     --pkg-config-flags="--static" \
  107.     --extra-cflags="-I$HOME/ffmpeg_build/include" \
  108.     --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  109.     --bindir="$HOME/bin" \
  110.     --enable-gpl \
  111.     --enable-libass \
  112.     --enable-libfdk-aac \
  113.     --enable-libfreetype \
  114.     --enable-libmp3lame \
  115.     --enable-libopus \
  116.     --enable-libtheora \
  117.     --enable-libvorbis \
  118.     --enable-libvpx \
  119.     --enable-libx264 \
  120.     --enable-nonfree \
  121.     --enable-libxcb \
  122.     --enable-libpulse \
  123.     --enable-alsa && \
  124.     PATH="$HOME/bin:$PATH" make && \
  125.     make install && \
  126.     make distclean && \
  127.     hash -r && \
  128.     mv ~/bin/ffmpeg /usr/local/bin/
  129.  
  130.  
  131.  
  132.  
  133. # nginx-rtmp with openresty
  134. RUN ZLIB="zlib-1.2.11" && vNGRTMP="v1.1.11" && PCRE="8.41" && nginx_build=/root/nginx && mkdir $nginx_build && \
  135.     cd $nginx_build && \
  136.     wget https://ftp.pcre.org/pub/pcre/pcre-$PCRE.tar.gz && \
  137.     tar -zxf pcre-$PCRE.tar.gz && \
  138.     cd pcre-$PCRE && \
  139.     ./configure && make && make install && \
  140.     cd $nginx_build && \
  141.     wget http://zlib.net/$ZLIB.tar.gz && \
  142.     tar -zxf $ZLIB.tar.gz && \
  143.     cd $ZLIB && \
  144.     ./configure && make &&  make install && \
  145.     cd $nginx_build && \
  146.     wget https://github.com/arut/nginx-rtmp-module/archive/$vNGRTMP.tar.gz && \
  147.     tar zxf $vNGRTMP.tar.gz && mv nginx-rtmp-module-* nginx-rtmp-module
  148.  
  149.  
  150. RUN OPENRESTY="1.13.6.2" && ZLIB="zlib-1.2.11" && PCRE="pcre-8.41" &&  openresty_build=/root/openresty && mkdir $openresty_build && \
  151.     wget https://openresty.org/download/openresty-$OPENRESTY.tar.gz && \
  152.     tar zxf openresty-$OPENRESTY.tar.gz && \
  153.     cd openresty-$OPENRESTY && \
  154.     nginx_build=/root/nginx && \
  155.     ./configure --sbin-path=/usr/local/nginx/nginx \
  156.     --conf-path=/usr/local/nginx/nginx.conf  \
  157.     --pid-path=/usr/local/nginx/nginx.pid \
  158.     --with-pcre-jit \
  159.     --with-ipv6 \
  160.     --with-pcre=$nginx_build/$PCRE \
  161.     --with-zlib=$nginx_build/$ZLIB \
  162.     --with-http_ssl_module \
  163.     --with-stream \
  164.     --with-mail=dynamic \
  165.     --add-module=$nginx_build/nginx-rtmp-module && \
  166.     make && make install && mv /usr/local/nginx/nginx /usr/local/bin
  167.  
  168.  
  169.  
  170.  
  171. # Boringssl build section
  172. RUN apt-get -y update && apt-get install -y --no-install-recommends \
  173.         g++ \
  174.         gcc \
  175.         libc6-dev \
  176.         make \
  177.         pkg-config \
  178.     && rm -rf /var/lib/apt/lists/*
  179. ENV GOLANG_VERSION 1.7.5
  180. ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
  181. ENV GOLANG_DOWNLOAD_SHA256 2e4dd6c44f0693bef4e7b46cc701513d74c3cc44f2419bf519d7868b12931ac3
  182. RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
  183.     && echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - \
  184.     && tar -C /usr/local -xzf golang.tar.gz \
  185.     && rm golang.tar.gz
  186.  
  187. ENV GOPATH /go
  188. ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
  189. RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
  190.  
  191.  
  192.  
  193. # https://boringssl.googlesource.com/boringssl/+/chromium-stable
  194. RUN git clone https://boringssl.googlesource.com/boringssl && \
  195.     cd boringssl && \
  196.     git reset --hard c7db3232c397aa3feb1d474d63a1c4dd674b6349 && \
  197.     sed -i s/" -Werror"//g CMakeLists.txt && \
  198.     mkdir -p build  && \
  199.     cd build  && \
  200.     cmake -DCMAKE_CXX_FLAGS="-lrt" ..  && \
  201.     make  && \
  202.     cd ..  && \
  203.     sudo mkdir -p /opt/boringssl  && \
  204.     sudo cp -R include /opt/boringssl/  && \
  205.     sudo mkdir -p /opt/boringssl/lib  && \
  206.     sudo cp build/ssl/libssl.a /opt/boringssl/lib/  && \
  207.     sudo cp build/crypto/libcrypto.a /opt/boringssl/lib/
  208.  
  209.  
  210. RUN LIBWEBSOCKET="3.1.0" && wget https://github.com/warmcat/libwebsockets/archive/v$LIBWEBSOCKET.tar.gz && \
  211.     tar xzvf v$LIBWEBSOCKET.tar.gz && \
  212.     cd libwebsockets-$LIBWEBSOCKET && \
  213.     mkdir build && \
  214.     cd build && \
  215.     cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" -DLWS_MAX_SMP=1 -DLWS_IPV6="ON" .. && \
  216.     make && make install
  217.  
  218.  
  219. RUN SRTP="2.2.0" && apt-get remove -y libsrtp0-dev && wget https://github.com/cisco/libsrtp/archive/v$SRTP.tar.gz && \
  220.     tar xfv v$SRTP.tar.gz && \
  221.     cd libsrtp-$SRTP && \
  222.     ./configure --prefix=/usr --enable-openssl && \
  223.     make shared_library && sudo make install
  224.  
  225.  
  226. # libnice build section
  227. # 8 March, 2019 1 commit 67807a17ce983a860804d7732aaf7d2fb56150ba
  228. RUN apt-get remove -y libnice-dev libnice10 && \
  229.     echo "deb http://deb.debian.org/debian  stretch-backports main" >> /etc/apt/sources.list && \
  230.     apt-get  update && \
  231.     apt-get install -y gtk-doc-tools libgnutls28-dev -t stretch-backports  && \
  232.     git clone https://gitlab.freedesktop.org/libnice/libnice.git && \
  233.     cd libnice && \
  234.     git checkout 67807a17ce983a860804d7732aaf7d2fb56150ba && \
  235.     bash autogen.sh && \
  236.     ./configure --prefix=/usr && \
  237.     make && \
  238.     make install
  239.  
  240.  
  241. # coturn build section
  242. RUN COTURN="4.5.0.8" && wget https://github.com/coturn/coturn/archive/$COTURN.tar.gz && \
  243.     tar xzvf $COTURN.tar.gz && \
  244.     cd coturn-$COTURN && \
  245.     ./configure && \
  246.     make && make install
  247.  
  248.  
  249. # RUN GDB="8.0" && wget ftp://sourceware.org/pub/gdb/releases/gdb-$GDB.tar.gz && \
  250. #     tar xzvf gdb-$GDB.tar.gz && \
  251. #     cd gdb-$GDB && \
  252. #     ./configure && \
  253. #     make && \
  254. #     make install
  255.  
  256.  
  257. # ./configure CFLAGS="-fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-lasan"
  258.  
  259.  
  260. # datachannel build
  261. RUN cd / && git clone https://github.com/sctplab/usrsctp.git && cd /usrsctp && \
  262.     git checkout origin/master && git reset --hard 1c9c82fbe3582ed7c474ba4326e5929d12584005 && \
  263.     ./bootstrap && \
  264.     ./configure && \
  265.     make && make install
  266.  
  267.  
  268.  
  269. # get from master
  270. # for get lower version, use git reset --hard <commit hash> after git checkout
  271. # example: git reset --hard 94cb30e816f3f08332760cb788756989bc57e09c ( for 0.8.2 version )
  272. RUN cd / && git clone https://github.com/meetecho/janus-gateway.git && cd /janus-gateway && \
  273.     sh autogen.sh &&  \
  274.     git checkout origin/master && \
  275.     PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  276.     --enable-post-processing \
  277.     --enable-boringssl \
  278.     --enable-data-channels \
  279.     --disable-rabbitmq \
  280.     --disable-mqtt \
  281.     --disable-unix-sockets \
  282.     --enable-dtls-settimeout \
  283.     --enable-plugin-echotest \
  284.     --enable-plugin-recordplay \
  285.     --enable-plugin-sip \
  286.     --enable-plugin-videocall \
  287.     --enable-plugin-voicemail \
  288.     --enable-plugin-textroom \
  289.     --enable-plugin-audiobridge \
  290.     --enable-plugin-nosip \
  291.     --enable-all-handlers && \
  292.     make && make install && make configs && ldconfig
  293.  
  294. # copy nginx config
  295. COPY nginx.conf /usr/local/nginx/nginx.conf
  296.  
  297. CMD nginx && janus
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement