| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- ARG NGINX_VERSION=1.23.1
- ARG NGINX_RTMP_VERSION=1.2.2
- ARG FFMPEG_VERSION=5.1
- ##############################
- # Build the NGINX-build image.
- FROM alpine:3.16.1 as build-nginx
- ARG NGINX_VERSION
- ARG NGINX_RTMP_VERSION
- ARG MAKEFLAGS="-j4"
- # Build dependencies.
- RUN apk add --no-cache \
- build-base \
- ca-certificates \
- curl \
- gcc \
- libc-dev \
- libgcc \
- linux-headers \
- make \
- musl-dev \
- openssl \
- openssl-dev \
- pcre \
- pcre-dev \
- pkgconf \
- pkgconfig \
- zlib-dev
- WORKDIR /tmp
- # Get nginx source.
- RUN 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 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.
- WORKDIR /tmp/nginx-${NGINX_VERSION}
- RUN \
- ./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 \
- --with-http_stub_status_module \
- --with-cc-opt="-Wimplicit-fallthrough=0" && \
- make && \
- make install
- ###############################
- # Build the FFmpeg-build image.
- FROM alpine:3.16.1 as build-ffmpeg
- ARG FFMPEG_VERSION
- ARG PREFIX=/usr/local
- ARG MAKEFLAGS="-j4"
- # FFmpeg build dependencies.
- RUN apk add --no-cache \
- build-base \
- coreutils \
- freetype-dev \
- lame-dev \
- libogg-dev \
- libass \
- libass-dev \
- libvpx-dev \
- libvorbis-dev \
- libwebp-dev \
- libtheora-dev \
- openssl-dev \
- opus-dev \
- pkgconf \
- pkgconfig \
- rtmpdump-dev \
- wget \
- x264-dev \
- x265-dev \
- yasm
- RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories
- RUN apk add --no-cache fdk-aac-dev
- WORKDIR /tmp
- # Get FFmpeg source.
- RUN 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.
- WORKDIR /tmp/ffmpeg-${FFMPEG_VERSION}
- RUN \
- ./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-postproc \
- --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.16.1
- LABEL MAINTAINER Alfred Gutierrez <alf.g.jr@gmail.com>
- # Set default ports.
- ENV HTTP_PORT 80
- ENV HTTPS_PORT 443
- ENV RTMP_PORT 1935
- RUN apk add --no-cache \
- ca-certificates \
- gettext \
- openssl \
- pcre \
- lame \
- libogg \
- curl \
- libass \
- libvpx \
- libvorbis \
- libwebp \
- libtheora \
- opus \
- rtmpdump \
- x264-dev \
- x265-dev
- COPY --from=build-nginx /usr/local/nginx /usr/local/nginx
- COPY --from=build-nginx /etc/nginx /etc/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"
- COPY nginx.conf /etc/nginx/nginx.conf.template
- RUN mkdir -p /opt/data && mkdir /www
- COPY static /www/static
- EXPOSE 1935
- EXPOSE 80
- CMD envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < \
- /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && \
- nginx
|