forked from ffplayout/ffplayout
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
fdd252a
commit adabbe4
Showing
1 changed file
with
112 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
FROM nvidia/cuda:12.0.1-cudnn8-runtime-centos7 | ||
|
||
ENV NVIDIA_VISIBLE_DEVICES all | ||
ENV NVIDIA_DRIVER_CAPABILITIES compute,video,utility | ||
|
||
ENV NVCODEC_VERSION 8.2.15.6 | ||
ENV FFMPEG_VERSION 5.1.2 | ||
ENV X264_VERSION=20191217-2245 | ||
ENV NASM_VERSION=2.14.02 | ||
ENV FDKAAC_VERSION=0.1.5 | ||
RUN yum install -y wget | ||
|
||
RUN buildDeps="autoconf \ | ||
automake \ | ||
bzip2 \ | ||
cmake3 \ | ||
diffutils \ | ||
expat-devel \ | ||
file \ | ||
gcc \ | ||
gcc-c++ \ | ||
git \ | ||
gperf \ | ||
libtool \ | ||
make \ | ||
perl \ | ||
python3 \ | ||
openssl-devel \ | ||
tar \ | ||
yasm \ | ||
which \ | ||
zlib-devel" && \ | ||
echo "${SRC}/lib" > /etc/ld.so.conf.d/libc.conf && \ | ||
yum --enablerepo=extras install -y epel-release && \ | ||
yum --enablerepo=epel install -y ${buildDeps} && \ | ||
alternatives --install /usr/bin/cmake cmake /usr/bin/cmake3 0 && \ | ||
# Install the tools required to build nasm 2.14.02 \ | ||
nasmDeps="asciidoc \ | ||
perl-Font-TTF \ | ||
perl-Sort-Versions \ | ||
xmlto" && \ | ||
yum --enablerepo=epel install -y ${nasmDeps} | ||
RUN curl -fsSLO https://www.nasm.us/pub/nasm/releasebuilds/$NASM_VERSION/nasm-$NASM_VERSION.tar.bz2 \ | ||
&& tar -xjf nasm-$NASM_VERSION.tar.bz2 \ | ||
&& cd nasm-$NASM_VERSION \ | ||
&& ./autogen.sh \ | ||
&& ./configure \ | ||
&& make -j$(nproc) \ | ||
&& make install | ||
RUN \ | ||
DIR=/tmp/x264 && \ | ||
mkdir -p ${DIR} && \ | ||
cd ${DIR} && yum install -y wget && \ | ||
wget https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245.tar.bz2 && \ | ||
tar -xjf x264-snapshot-${X264_VERSION}.tar.bz2 && cd x264-snapshot-${X264_VERSION} && \ | ||
./configure --enable-shared --enable-pic --disable-cli && \ | ||
make -j $(nproc | awk '{print $1 / 2}') && \ | ||
make install | ||
|
||
### fdk-aac https://github.com/mstorsjo/fdk-aac | ||
RUN \ | ||
DIR=/tmp/fdk-aac && \ | ||
mkdir -p ${DIR} && \ | ||
cd ${DIR} && \ | ||
curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC_VERSION}.tar.gz | \ | ||
tar -zx --strip-components=1 && \ | ||
autoreconf -fiv && \ | ||
./configure --enable-shared --datadir="${DIR}" && \ | ||
make -j $(nproc | awk '{print $1 / 2}') && \ | ||
make install && \ | ||
rm -rf ${DIR} | ||
|
||
RUN git clone --depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers \ | ||
&& cd nv-codec-headers \ | ||
&& make install | ||
ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig | ||
RUN curl -fsSLO https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2 \ | ||
&& tar -xjf ffmpeg-$FFMPEG_VERSION.tar.bz2 \ | ||
&& cd ffmpeg-$FFMPEG_VERSION \ | ||
&& ./configure --enable-nvenc --enable-libx264 --enable-gpl --enable-libfdk_aac --enable-libx264 --enable-nonfree --enable-postproc --enable-shared --enable-version3 \ | ||
&& make -j$(nproc) \ | ||
&& make install | ||
|
||
RUN yum -y install systemd vim pico; yum clean all; \ | ||
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ | ||
rm -f /lib/systemd/system/multi-user.target.wants/*;\ | ||
rm -f /etc/systemd/system/*.wants/*;\ | ||
rm -f /lib/systemd/system/local-fs.target.wants/*; \ | ||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ | ||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ | ||
rm -f /lib/systemd/system/basic.target.wants/*;\ | ||
rm -f /lib/systemd/system/anaconda.target.wants/*; | ||
RUN yum -y install net-tools openssh-server | ||
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config | ||
|
||
RUN yum update -y \ | ||
&& yum install -y dejavu-sans-fonts sudo wget \ | ||
&& wget -q -O /tmp/ffplayout-0.17.0-1.x86_64.rpm "https://github.com/ffplayout/ffplayout/releases/download/v0.17.0/ffplayout-0.17.0-1.x86_64.rpm" \ | ||
&& yum install -y /tmp/ffplayout-0.17.0-1.x86_64.rpm \ | ||
&& yum clean all \ | ||
&& echo 'Docker!' | passwd --stdin root \ | ||
&& rm /tmp/ffplayout-0.17.0-1.x86_64.rpm \ | ||
&& mkdir -p /home/ffpu && chown -R ffpu: /home/ffpu \ | ||
&& systemctl enable ffplayout \ | ||
&& systemctl enable ffpapi | ||
|
||
EXPOSE 8787 | ||
RUN echo "/usr/local/lib" >> /etc/ld.so.conf.d/nvidia.conf | ||
RUN echo "/usr/local/cuda/compat/" >> /etc/ld.so.conf.d/nvidia.conf | ||
|
||
VOLUME [ "/sys/fs/cgroup", "/tmp", "/run", "/run/lock", "/etc/ffplayout", "/usr/share/ffplayout" ,"/var/lib/ffplayout" ] | ||
CMD ["/usr/sbin/init"] |