diff --git a/docker/kurento-media-server/Dockerfile b/docker/kurento-media-server/Dockerfile index a3822949..f13e13fa 100644 --- a/docker/kurento-media-server/Dockerfile +++ b/docker/kurento-media-server/Dockerfile @@ -1,230 +1,188 @@ FROM fedora:31 MAINTAINER Jeroen van Meeuwen # From https://github.com/Kurento/kurento-media-server/blob/master/debian/control # # build-essential, # cmake, # gstreamer1.5-plugins-good, # kms-cmake-utils (>= 6.7.0), # kms-core-dev (>= 6.7.0), # kms-elements-dev (>= 6.7.0), # kms-filters-dev (>= 6.7.0), # kurento-module-creator (>= 6.7.0), # libboost-dev, # libboost-filesystem-dev, # libboost-log-dev, # libboost-program-options-dev, # libboost-system-dev, # libboost-test-dev, # libboost-thread-dev, # libevent-dev, # libglibmm-2.4-dev, # libgstreamer-plugins-base1.5-dev, # libsigc++-2.0-dev, # libwebsocketpp-dev ENV CFLAGS="-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -fasynchronous-unwind-tables -fstack-clash-protection -flto" ENV CXXFLAGS=${CFLAGS} ENV LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' ENV CC=gcc ENV CXX=g++ ENV AR=/bin/gcc-ar ENV RANLIB=/bin/gcc-ranlib ENV NM=/bin/gcc-nm ENV CMAKE_CXX_ARCHIVE_CREATE=" qcs " ARG CMAKEOPTS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_INSTALL_SYSCONFDIR=/etc/ -DCMAKE_MODULES_INSTALL_DIR=/usr/share/cmake/Modules/ -DBUILD_SHARED_LIBS=ON -DCMAKE_AR=${AR} -DCMAKE_CXX_ARCHIVE_FINISH=true -DCMAKE_MODULES_INSTALL_DIR=/usr/share/cmake/Modules/ -DGENERATE_TESTS=FALSE -DDISABLE_TESTS=TRUE" ARG KURENTO_VERSION="6.14.0" ARG KURENTO_JSONCPP_VERSION="1.6.4" RUN rpm -Uvh https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-31.noarch.rpm && \ rpm -Uvh https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-31.noarch.rpm && \ dnf -y install \ boost-devel \ cmake \ coreutils \ ffmpeg \ gcc-c++ \ git \ glibmm24-devel \ gstreamer1-devel \ gstreamer1-plugins-base-devel \ gstreamer1-plugins-bad-free-devel \ gstreamer1-plugins-bad-freeworld \ gstreamer1-plugins-good \ gstreamer1-plugins-ugly \ libevent-devel \ libnice-devel \ libsigc++20-devel \ libsoup-devel \ libuuid-devel \ libvpx-devel \ make \ maven \ net-tools \ opencv-devel \ openssl-devel \ redhat-rpm-config \ vim-enhanced \ websocketpp-devel && \ mkdir -p /src/ && \ git clone https://github.com/Kurento/kms-cmake-utils.git /src/kms-cmake-utils.git && \ cd /src/kms-cmake-utils.git/ && \ git checkout ${KURENTO_VERSION} && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ .. && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ git clone https://github.com/Kurento/kurento-module-creator.git /src/kurento-module-creator.git && \ cd /src/kurento-module-creator.git/ && \ git checkout ${KURENTO_VERSION} && \ mvn clean install -DskipTests && \ cp target/kurento-module-creator-jar-with-dependencies.jar /usr/bin/. && \ cp scripts/kurento-module-creator /usr/bin/. && \ cp target/classes/*.cmake /usr/share/cmake/Modules/. && \ git clone https://github.com/Kurento/jsoncpp.git /src/jsoncpp.git && \ cd /src/jsoncpp.git/ && \ git checkout ${KURENTO_JSONCPP_VERSION} && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ -DJSONCPP_WITH_CMAKE_PACKAGE=ON \ -DLIBRARY_INSTALL_DIR=/usr/lib64/ \ -DPACKAGE_INSTALL_DIR=/usr/share/cmake/ \ .. && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ mv -v /usr/lib/pkgconfig/*.pc /usr/share/pkgconfig/. && \ mv -v /usr/share/cmake/jsoncpp/*.cmake /usr/share/cmake/Modules/. && \ rm -rvf /usr/share/cmake/jsoncpp/ && \ mv -v /usr/include/json/features.h /usr/include/json/json-features.h && \ sed -i -e 's/features\.h/json-features\.h/g' /usr/include/json/*.h && \ cp -av /usr/include/json /usr/include/kmsjsoncpp && \ git clone https://github.com/Kurento/kms-jsonrpc.git /src/kms-jsonrpc.git && \ cd /src/kms-jsonrpc.git/ && \ git checkout ${KURENTO_VERSION} && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ .. && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ git clone https://github.com/Kurento/kms-core.git /src/kms-core.git && \ cd /src/kms-core.git/ && \ git checkout ${KURENTO_VERSION} && \ sed -r -i \ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \ $(find -type f -name CMakeLists.txt) && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ -DCMAKE_INSTALL_GST_PLUGINS_DIR=/usr/lib64/gstreamer-1.0/ \ .. && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ git clone https://github.com/Kurento/kms-elements.git /src/kms-elements.git && \ cd /src/kms-elements.git/ && \ git checkout ${KURENTO_VERSION} && \ sed -r -i \ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \ $(find -type f -name CMakeLists.txt) && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ .. && \ sed -i \ -e 's/-lkmsgstcommons/-lkmsgstcommons -lkmscoreinterface/g' \ $(find . -type f -name link.txt) && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ cp -av src/server/implementation/HttpServer/libkmshttpep.so /usr/lib64/ && \ - cp -av src/gst-plugins/webrtcendpoint/libwebrtcdataproto.so.6.14.0 /usr/lib64/gstreamer-1.0/ && \ - cp -av src/gst-plugins/webrtcendpoint/libkmswebrtcendpointlib.so.6.14.0 /usr/lib64/gstreamer-1.0/ && \ git clone https://github.com/Kurento/kms-filters.git /src/kms-filters.git && \ cd /src/kms-filters.git/ && \ git checkout ${KURENTO_VERSION} && \ sed -r -i \ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \ $(find -type f -name CMakeLists.txt) && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ .. && \ make -j $(nproc) VERBOSE=1 && \ make install -s && \ git clone https://github.com/Kurento/kurento-media-server.git /src/kurento-media-server.git && \ cd /src/kurento-media-server.git/ && \ git checkout ${KURENTO_VERSION} && \ sed -r -i \ -e 's/gstreamer-(.*)1.5/gstreamer-\11.0/g' \ $(find -type f -name CMakeLists.txt) && \ sed -i \ -e '603,618d' \ server/death_handler.cpp && \ mkdir build && \ cd build && \ cmake \ ${CMAKEOPTS} \ .. && \ sed -i \ -e 's/-lkmsgstcommons/-lkmsgstcommons -lkmscoreinterface/g' \ $(find . -type f -name link.txt) && \ make -j $(nproc) VERBOSE=1 && \ make install VERBOSE=1 -s && \ cp -av $(find . -type f -name 'libtransport.so*') /usr/lib64/ && \ cp -av $(find . -type f -name 'libwebsocketTransport.so*') /usr/lib64/ && \ - strip -s /usr/lib64/libkms*.so* /usr/lib64/kurento/modules/*.so* && \ - dnf -y remove \ - -x boost-filesystem \ - -x boost-program-options \ - -x boost-log \ - -x boost-thread \ - -x file \ - -x gstreamer1-plugins-base \ - -x gstreamer1-plugins-bad-free \ - -x glibmm24 \ - -x java-1.8.0-openjdk \ - -x libnice \ - -x libsigc \ - -x libvpx \ - -x opencv \ - boost-devel \ - cmake \ - gcc-c++ \ - git \ - glibmm24-devel \ - gstreamer1-devel \ - gstreamer1-plugins-base-devel \ - gstreamer1-plugins-bad-free-devel \ - libevent-devel \ - libnice-devel \ - libsigc++20-devel \ - libsoup-devel \ - libuuid-devel \ - libvpx-devel \ - make \ - maven \ - opencv-devel \ - openssl-devel \ - redhat-rpm-config \ - vim-enhanced \ - websocketpp-devel && \ - dnf -y clean all && \ - rm -rvf \ - /src/ \ - /root/.m2/ \ - /usr/include/* + strip -s /usr/lib64/libkms*.so* /usr/lib64/kurento/modules/*.so* COPY rootfs/ / -CMD ["/bin/kurento-media-server"] +CMD ["/bin/kurento-media-server", "--gst-plugin-path", "/usr/lib64/gstreamer-1.0/"]