From 1e03af3ea31a0e764d31f3db029679663ba4dc81 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Mon, 8 Jun 2020 12:19:30 +0200 Subject: [PATCH] openvidu-server: COMPOSED recording container update --- .../docker/openvidu-recording/Dockerfile | 32 ++++++++++--------- .../docker/openvidu-recording/entrypoint.sh | 2 +- .../service/ComposedRecordingService.java | 8 ++--- .../openvidu/server/utils/DockerManager.java | 6 +++- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/openvidu-server/docker/openvidu-recording/Dockerfile b/openvidu-server/docker/openvidu-recording/Dockerfile index 82545f26..3debb635 100644 --- a/openvidu-server/docker/openvidu-recording/Dockerfile +++ b/openvidu-server/docker/openvidu-recording/Dockerfile @@ -1,23 +1,25 @@ -FROM ubuntu:16.04 +FROM ubuntu:20.04 MAINTAINER openvidu@gmail.com -# Install Chrome -RUN apt-get update && apt-get -y upgrade && apt-get install -y wget sudo -RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | tee /etc/apt/sources.list.d/google-chrome.list && \ - apt-get update && apt-get install -y google-chrome-stable +# Install packages +RUN apt-get update && apt-get -y upgrade && apt-get install -y \ + wget \ + sudo \ + gnupg2 \ + apt-utils \ + software-properties-common \ + ffmpeg \ + pulseaudio \ + xvfb \ + jq \ + && rm -rf /var/lib/apt/lists/* -# Install media packages -RUN apt-get install -y software-properties-common -RUN add-apt-repository ppa:jonathonf/ffmpeg-4 -RUN apt-get update -RUN apt-get install -y ffmpeg pulseaudio xvfb - -# Install jq for managing JSON -RUN apt-get install -y jq +RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - && \ + sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' +RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y google-chrome-stable && rm -rf /var/lib/apt/lists/* # Clean -RUN apt-get autoclean +RUN apt-get clean && apt-get autoclean && apt-get autoremove COPY entrypoint.sh /entrypoint.sh RUN ["chmod", "+x", "/entrypoint.sh"] diff --git a/openvidu-server/docker/openvidu-recording/entrypoint.sh b/openvidu-server/docker/openvidu-recording/entrypoint.sh index f0697d01..e51299bd 100755 --- a/openvidu-server/docker/openvidu-recording/entrypoint.sh +++ b/openvidu-server/docker/openvidu-recording/entrypoint.sh @@ -68,7 +68,7 @@ pulseaudio -D touch xvfb.log chmod 777 xvfb.log -xvfb-run --server-num=${DISPLAY_NUM} --server-args="-ac -screen 0 ${RESOLUTION}x24 -noreset" google-chrome --start-maximized --no-sandbox --test-type --disable-infobars --window-size=$WIDTH,$HEIGHT --window-position=0,0 --no-first-run --ignore-certificate-errors --autoplay-policy=no-user-gesture-required --kiosk $URL &> xvfb.log & +xvfb-run --server-num=${DISPLAY_NUM} --server-args="-ac -screen 0 ${RESOLUTION}x24 -noreset" google-chrome --kiosk --start-maximized --test-type --no-sandbox --disable-infobars --disable-gpu --disable-popup-blocking --window-size=$WIDTH,$HEIGHT --window-position=0,0 --no-first-run --ignore-certificate-errors --autoplay-policy=no-user-gesture-required $URL &> xvfb.log & touch stop chmod 777 /recordings sleep 2 diff --git a/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedRecordingService.java b/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedRecordingService.java index 2a357d8a..11b08469 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedRecordingService.java +++ b/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedRecordingService.java @@ -169,17 +169,13 @@ public class ComposedRecordingService extends RecordingService { final String container = RecordingManager.IMAGE_NAME + ":" + RecordingManager.IMAGE_TAG; final String containerName = "recording_" + recording.getId(); Volume volume1 = new Volume("/recordings"); - Volume volume2 = new Volume("/dev/shm"); List volumes = new ArrayList<>(); volumes.add(volume1); - volumes.add(volume2); Bind bind1 = new Bind(openviduConfig.getOpenViduRecordingPath(), volume1); - Bind bind2 = new Bind("/dev/shm", volume2); List binds = new ArrayList<>(); binds.add(bind1); - binds.add(bind2); - containerId = dockerManager.runContainer(container, containerName, null, - volumes, binds, "host", envs, null); + containerId = dockerManager.runContainer(container, containerName, null, volumes, binds, "host", envs, null, + 536870912L); containers.put(containerId, containerName); } catch (Exception e) { this.cleanRecordingMaps(recording); diff --git a/openvidu-server/src/main/java/io/openvidu/server/utils/DockerManager.java b/openvidu-server/src/main/java/io/openvidu/server/utils/DockerManager.java index 7a94afe5..91ceb042 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/utils/DockerManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/utils/DockerManager.java @@ -104,7 +104,8 @@ public class DockerManager { } public String runContainer(String container, String containerName, String user, List volumes, - List binds, String networkMode, List envs, List command) throws Exception { + List binds, String networkMode, List envs, List command, Long shmSize) + throws Exception { CreateContainerCmd cmd = dockerClient.createContainerCmd(container).withEnv(envs); if (containerName != null) { @@ -116,6 +117,9 @@ public class DockerManager { } HostConfig hostConfig = new HostConfig().withNetworkMode(networkMode); + if (shmSize != null) { + hostConfig.withShmSize(shmSize); + } if (volumes != null) { cmd.withVolumes(volumes); }