mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-30 15:36:57 +08:00
131 lines
4.2 KiB
Docker
131 lines
4.2 KiB
Docker
|
ARG Version=7
|
||
|
|
||
|
FROM centos:${Version} As build
|
||
|
|
||
|
ARG HTTP_PROXY=${NO_PROXY}
|
||
|
ARG HTTPS_PROXY=${NO_PROXY}
|
||
|
ARG PKG_CONFIG_VERSION=0.29.2
|
||
|
ARG CMAKE_VERSION=3.18
|
||
|
ARG CMAKE_FULL_VERSION=3.18.4
|
||
|
ARG YASM_VERSION=1.3.0
|
||
|
ARG NASM_VERSION=2.15.05
|
||
|
ARG X265_VERSION=3.4
|
||
|
|
||
|
RUN yum install -y \
|
||
|
gcc \
|
||
|
gcc-c++ \
|
||
|
kernel-devel \
|
||
|
kernel-headers \
|
||
|
openssl \
|
||
|
openssl-devel \
|
||
|
git \
|
||
|
wget \
|
||
|
which
|
||
|
|
||
|
WORKDIR /opt
|
||
|
|
||
|
RUN wget -e "https_proxy=${HTTPS_PROXY}" https://pkgconfig.freedesktop.org/releases/pkg-config-${PKG_CONFIG_VERSION}.tar.gz \
|
||
|
&& tar -zxvf pkg-config-${PKG_CONFIG_VERSION}.tar.gz \
|
||
|
&& cd pkg-config-${PKG_CONFIG_VERSION} \
|
||
|
&& ./configure --with-internal-glib \
|
||
|
&& make -j8 \
|
||
|
&& make install
|
||
|
|
||
|
RUN wget -e "https_proxy=${HTTPS_PROXY}" https://cmake.org/files/v${CMAKE_VERSION}/cmake-${CMAKE_FULL_VERSION}.tar.gz \
|
||
|
&& tar -zxvf cmake-${CMAKE_FULL_VERSION}.tar.gz \
|
||
|
&& cd cmake-${CMAKE_FULL_VERSION} \
|
||
|
&& ./bootstrap \
|
||
|
&& gmake -j8 \
|
||
|
&& gmake install
|
||
|
|
||
|
RUN cd /opt \
|
||
|
&& wget -e "https_proxy=${HTTPS_PROXY}" http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERSION}.tar.gz \
|
||
|
&& tar zxvf yasm-${YASM_VERSION}.tar.gz \
|
||
|
&& cd yasm-${YASM_VERSION} \
|
||
|
&& ./configure \
|
||
|
&& make -j8 \
|
||
|
&& make install
|
||
|
|
||
|
RUN wget -e "https_proxy=${HTTPS_PROXY}" https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-${NASM_VERSION}.tar.xz \
|
||
|
&& tar -xvJf nasm-${NASM_VERSION}.tar.xz \
|
||
|
&& cd nasm-${NASM_VERSION} \
|
||
|
&& ./configure --disable-shared --enable-static \
|
||
|
&& make -j8 \
|
||
|
&& make install
|
||
|
|
||
|
RUN cd /opt \
|
||
|
&& git clone https://code.videolan.org/videolan/x264.git \
|
||
|
&& cd x264 \
|
||
|
&& git checkout -b stable origin/stable \
|
||
|
&& git pull --rebase \
|
||
|
&& ./configure --enable-pic --enable-shared --disable-asm \
|
||
|
&& make -j8 \
|
||
|
&& make install \
|
||
|
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
|
||
|
|
||
|
RUN cd /opt \
|
||
|
&& wget -e "https_proxy=${HTTPS_PROXY}" https://github.com/videolan/x265/archive/Release_${X265_VERSION}.tar.gz \
|
||
|
&& tar zxvf Release_${X265_VERSION}.tar.gz \
|
||
|
&& cd x265-Release_${X265_VERSION}/build/linux \
|
||
|
&& cmake ../../source \
|
||
|
&& make -j8 \
|
||
|
&& make install \
|
||
|
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
|
||
|
|
||
|
RUN cd /opt \
|
||
|
&& git clone https://gitee.com/xia-chu/FFmpeg.git \
|
||
|
&& cd /opt/FFmpeg \
|
||
|
&& export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH \
|
||
|
&& ./configure \
|
||
|
--disable-debug \
|
||
|
--disable-doc \
|
||
|
--disable-shared \
|
||
|
--enable-gpl \
|
||
|
--enable-version3 \
|
||
|
--enable-static \
|
||
|
--enable-nonfree \
|
||
|
--enable-pthreads \
|
||
|
--enable-libx264 \
|
||
|
--enable-libx265 \
|
||
|
--enable-small \
|
||
|
--pkgconfigdir=/usr/local/lib/pkgconfig \
|
||
|
--pkg-config-flags="--static" \
|
||
|
&& make -j8 \
|
||
|
&& make install
|
||
|
|
||
|
RUN cd /opt \
|
||
|
&& git clone --depth 1 https://github.com/xia-chu/ZLMediaKit.git \
|
||
|
&& cd ZLMediaKit \
|
||
|
&& git submodule update --init \
|
||
|
&& mkdir -p build release/linux/Release/ \
|
||
|
&& cd build \
|
||
|
&& cmake -DCMAKE_BUILD_TYPE=Release .. \
|
||
|
&& make -j8
|
||
|
|
||
|
RUN mkdir -p /opt/build/opt/zlm/ /opt/build/usr/local/bin/ /opt/build/usr/bin/ /opt/build/usr/local/lib/ /opt/build/etc/localtime \
|
||
|
&& cd /opt/build \
|
||
|
&& /usr/bin/cp -ip /usr/local/lib/libx26* ./usr/local/lib \
|
||
|
&& /usr/bin/cp -ip /usr/local/bin/ffmpeg ./usr/local/bin \
|
||
|
&& /usr/bin/cp -ip /opt/ZLMediaKit/release/linux/Release/MediaServer ./opt/zlm/ \
|
||
|
&& /usr/bin/cp -irp /opt/ZLMediaKit/release/linux/Release/www ./opt/zlm/ \
|
||
|
&& /usr/bin/cp -ip /opt/ZLMediaKit/tests/ssl.p12 ./opt/zlm/ \
|
||
|
&& /usr/bin/cp -ip /usr/bin/which ./usr/bin/
|
||
|
|
||
|
FROM centos:${Version}
|
||
|
LABEL maintainer="chengxiaosheng <kevin__cheng@outlook.com>" project-url="https://github.com/xia-chu/ZLMediaKit" description="一个基于C++11的高性能运营级流媒体服务框架"
|
||
|
|
||
|
EXPOSE 9000/tcp \
|
||
|
1935/tcp \
|
||
|
19350/tcp \
|
||
|
554/tcp \
|
||
|
322/tcp \
|
||
|
80/tcp \
|
||
|
443/tcp \
|
||
|
10000/udp \
|
||
|
10000/tcp
|
||
|
|
||
|
WORKDIR /opt/zlm
|
||
|
VOLUME [ "/opt/zlm/conf/","/opt/zlm/log/","opt/zlm/ffmpeg/"]
|
||
|
COPY --from=build /opt/build /
|
||
|
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH TZ=Asia/Shanghai
|
||
|
CMD ./MediaServer -c ./conf/config.ini
|