ARG NGINX_VERSION=1.16.1 ARG NGINX_RTMP_VERSION=1.2.1 ARG FFMPEG_VERSION=4.2.1 ############################## # Build the NGINX-build image. FROM alpine:3.8 as build-nginx ARG NGINX_VERSION ARG NGINX_RTMP_VERSION # Build dependencies. RUN apk add --update \ build-base \ ca-certificates \ curl \ gcc \ libc-dev \ libgcc \ linux-headers \ make \ musl-dev \ openssl \ openssl-dev \ pcre \ pcre-dev \ pkgconf \ pkgconfig \ zlib-dev # Get nginx source. RUN cd /tmp && \ wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \ tar zxf nginx-${NGINX_VERSION}.tar.gz && \ rm nginx-${NGINX_VERSION}.tar.gz # Get nginx-rtmp module. RUN cd /tmp && \ wget https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_VERSION}.tar.gz && \ tar zxf v${NGINX_RTMP_VERSION}.tar.gz && rm v${NGINX_RTMP_VERSION}.tar.gz # Compile nginx with nginx-rtmp module. RUN cd /tmp/nginx-${NGINX_VERSION} && \ ./configure \ --prefix=/usr/local/nginx \ --add-module=/tmp/nginx-rtmp-module-${NGINX_RTMP_VERSION} \ --conf-path=/etc/nginx/nginx.conf \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-debug && \ cd /tmp/nginx-${NGINX_VERSION} && make && make install ############################### # Build the FFmpeg-build image. FROM alpine:3.8 as build-ffmpeg ARG FFMPEG_VERSION ARG PREFIX=/usr/local ARG MAKEFLAGS="-j4" # FFmpeg build dependencies. RUN apk add --update \ build-base \ coreutils \ freetype-dev \ lame-dev \ libogg-dev \ libass \ libass-dev \ libvpx-dev \ libvorbis-dev \ libwebp-dev \ libtheora-dev \ opus-dev \ pkgconf \ pkgconfig \ rtmpdump-dev \ wget \ x264-dev \ x265-dev \ yasm RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories RUN apk add --update fdk-aac-dev # Get FFmpeg source. RUN cd /tmp/ && \ wget http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ tar zxf ffmpeg-${FFMPEG_VERSION}.tar.gz && rm ffmpeg-${FFMPEG_VERSION}.tar.gz # Compile ffmpeg. RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \ ./configure \ --prefix=${PREFIX} \ --enable-version3 \ --enable-gpl \ --enable-nonfree \ --enable-small \ --enable-libmp3lame \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libtheora \ --enable-libvorbis \ --enable-libopus \ --enable-libfdk-aac \ --enable-libass \ --enable-libwebp \ --enable-librtmp \ --enable-postproc \ --enable-avresample \ --enable-libfreetype \ --enable-openssl \ --disable-debug \ --disable-doc \ --disable-ffplay \ --extra-libs="-lpthread -lm" && \ make && make install && make distclean # Cleanup. RUN rm -rf /var/cache/* /tmp/* ########################## # Build the release image. FROM alpine:3.8 LABEL MAINTAINER Alfred Gutierrez RUN apk add --update \ ca-certificates \ openssl \ pcre \ lame \ libogg \ libass \ libvpx \ libvorbis \ libwebp \ libtheora \ opus \ rtmpdump \ x264-dev \ x265-dev COPY --from=build-nginx /usr/local/nginx /usr/local/nginx COPY --from=build-ffmpeg /usr/local /usr/local COPY --from=build-ffmpeg /usr/lib/libfdk-aac.so.2 /usr/lib/libfdk-aac.so.2 # Add NGINX path, config and static files. ENV PATH "${PATH}:/usr/local/nginx/sbin" ADD nginx.conf /etc/nginx/nginx.conf ADD streamer_configs / RUN mkdir -p /opt/data && mkdir /www ADD static /www/static EXPOSE 1935 EXPOSE 80 CMD ["nginx"]