tiny-livestream/Dockerfile

159 lines
3.4 KiB
Docker
Raw Permalink Normal View History

ARG NGINX_VERSION=1.16.1
2018-09-29 23:29:25 -07:00
ARG NGINX_RTMP_VERSION=1.2.1
ARG FFMPEG_VERSION=4.2.1
2016-10-23 18:49:28 -07:00
2018-09-30 02:03:54 -07:00
##############################
# Build the NGINX-build image.
FROM alpine:3.8 as build-nginx
2018-09-29 23:29:25 -07:00
ARG NGINX_VERSION
ARG NGINX_RTMP_VERSION
2016-10-23 18:49:28 -07:00
# Build dependencies.
2018-11-10 20:26:54 -08:00
RUN apk add --update \
build-base \
ca-certificates \
2018-09-12 20:10:00 -07:00
curl \
gcc \
libc-dev \
libgcc \
2018-09-29 23:29:25 -07:00
linux-headers \
make \
musl-dev \
openssl \
openssl-dev \
pcre \
pcre-dev \
pkgconf \
pkgconfig \
zlib-dev
2016-10-23 18:49:28 -07:00
# Get nginx source.
RUN cd /tmp && \
2018-09-29 23:29:25 -07:00
wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \
tar zxf nginx-${NGINX_VERSION}.tar.gz && \
rm nginx-${NGINX_VERSION}.tar.gz
2016-10-23 18:49:28 -07:00
# 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
2016-10-23 18:49:28 -07:00
# Compile nginx with nginx-rtmp module.
RUN cd /tmp/nginx-${NGINX_VERSION} && \
./configure \
--prefix=/usr/local/nginx \
2016-10-23 18:49:28 -07:00
--add-module=/tmp/nginx-rtmp-module-${NGINX_RTMP_VERSION} \
--conf-path=/etc/nginx/nginx.conf \
2018-09-29 23:29:25 -07:00
--with-threads \
--with-file-aio \
--with-http_ssl_module \
2018-03-05 21:19:59 -08:00
--with-debug && \
cd /tmp/nginx-${NGINX_VERSION} && make && make install
2016-10-23 18:49:28 -07:00
2018-09-30 02:03:54 -07:00
###############################
# Build the FFmpeg-build image.
FROM alpine:3.8 as build-ffmpeg
2018-09-29 23:29:25 -07:00
ARG FFMPEG_VERSION
ARG PREFIX=/usr/local
2018-11-10 20:26:54 -08:00
ARG MAKEFLAGS="-j4"
2018-09-29 23:29:25 -07:00
# FFmpeg build dependencies.
2019-01-21 21:29:17 -08:00
RUN apk add --update \
2018-09-29 23:29:25 -07:00
build-base \
coreutils \
2018-09-29 23:29:25 -07:00
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 \
2018-11-10 20:26:54 -08:00
yasm
2018-09-29 23:29:25 -07:00
2016-10-23 18:49:28 -07:00
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
2016-10-23 18:49:28 -07:00
# Compile ffmpeg.
RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \
2016-10-23 19:17:32 -07:00
./configure \
2018-09-29 23:29:25 -07:00
--prefix=${PREFIX} \
2016-10-23 19:17:32 -07:00
--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 \
2018-11-10 20:26:54 -08:00
--disable-debug \
--disable-doc \
--disable-ffplay \
--extra-libs="-lpthread -lm" && \
make && make install && make distclean
2016-10-23 18:49:28 -07:00
# Cleanup.
RUN rm -rf /var/cache/* /tmp/*
2018-09-30 02:03:54 -07:00
##########################
# Build the release image.
FROM alpine:3.8
2018-09-29 23:29:25 -07:00
LABEL MAINTAINER Alfred Gutierrez <alf.g.jr@gmail.com>
2018-09-30 02:03:54 -07:00
2018-09-29 23:29:25 -07:00
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
2018-09-29 23:29:25 -07:00
COPY --from=build-ffmpeg /usr/local /usr/local
COPY --from=build-ffmpeg /usr/lib/libfdk-aac.so.2 /usr/lib/libfdk-aac.so.2
2018-09-29 23:29:25 -07:00
# Add NGINX path, config and static files.
ENV PATH "${PATH}:/usr/local/nginx/sbin"
ADD nginx.conf /etc/nginx/nginx.conf
ADD streamer_configs /
2018-09-29 23:29:25 -07:00
RUN mkdir -p /opt/data && mkdir /www
2016-10-23 18:49:28 -07:00
ADD static /www/static
2018-09-29 23:29:25 -07:00
EXPOSE 1935
EXPOSE 80
CMD ["nginx"]