Monorepo for Aesthetic.Computer aesthetic.computer
at main 78 lines 2.1 kB view raw
1FROM fedora:latest 2 3ENV DISPLAY=:1 4ENV XVFB_RESOLUTION=320x240x24 5ENV LD_LIBRARY_PATH=/usr/local/lib 6ENV DBUS_SESSION_BUS_ADDRESS=/dev/null 7 8WORKDIR /app 9 10# --- Base system and dependencies --- 11RUN dnf install -y \ 12 git wget curl tar make gcc gcc-c++ \ 13 autoconf automake libtool cmake \ 14 nasm yasm \ 15 xorg-x11-server-Xvfb \ 16 chromium \ 17 pulseaudio pulseaudio-utils alsa-utils libXScrnSaver \ 18 pulseaudio-libs-devel \ 19 freetype-devel fontconfig-devel libass-devel \ 20 lame-devel opus-devel libvpx-devel \ 21 openssl-devel pcre-devel zlib-devel \ 22 libX11-devel libXfixes-devel \ 23 dbus \ 24 pkgconfig && \ 25 mkdir -p /run/dbus && \ 26 dnf clean all 27 28# --- Build and install x264 from source --- 29WORKDIR /tmp 30RUN git clone https://code.videolan.org/videolan/x264.git && \ 31 cd x264 && \ 32 ./configure --prefix=/usr/local --enable-shared --disable-cli && \ 33 make -j$(nproc) && \ 34 make install 35 36# --- Build and install FFmpeg with libx264 --- 37WORKDIR /tmp 38RUN git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg && \ 39 cd ffmpeg && \ 40 PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure \ 41 --prefix=/usr/local \ 42 --enable-gpl \ 43 --enable-libx264 \ 44 --enable-libfreetype \ 45 --enable-libass \ 46 --enable-libpulse \ 47 --enable-libopus \ 48 --enable-libmp3lame \ 49 --enable-libvpx \ 50 --enable-libfontconfig \ 51 --enable-shared \ 52 --disable-static && \ 53 make -j$(nproc) && \ 54 make install && \ 55 ldconfig 56 57# --- Build and install nginx with RTMP module --- 58WORKDIR /tmp 59RUN curl -LO http://nginx.org/download/nginx-1.25.4.tar.gz && \ 60 tar -xzf nginx-1.25.4.tar.gz && \ 61 git clone https://github.com/arut/nginx-rtmp-module.git && \ 62 cd nginx-1.25.4 && \ 63 ./configure --add-module=../nginx-rtmp-module && \ 64 make && \ 65 make install 66 67# --- Setup app --- 68WORKDIR /app 69COPY stream.sh . 70COPY nginx.conf /usr/local/nginx/conf/nginx.conf 71RUN chmod +x stream.sh 72 73EXPOSE 1935 74EXPOSE 8080 75EXPOSE 9222 76 77CMD ["./stream.sh"] 78