From 08a857eda3342b8bbe6d4e93caa9d7f23e127c67 Mon Sep 17 00:00:00 2001 From: Gennadiy Dubina Date: Mon, 11 Apr 2016 05:49:50 +0000 Subject: [PATCH] media server docker container --- .gitignore | 13 +------------ Dockerfile | 23 +++++++++++++++++++++++ README.md | 22 ++++++++++++++++++++-- build.sh | 9 +++++++++ run.sh | 10 ++++++++++ scripts/configure.sh | 30 ++++++++++++++++++++++++++++++ scripts/run.sh | 5 +++++ 7 files changed, 98 insertions(+), 14 deletions(-) create mode 100644 Dockerfile create mode 100755 build.sh create mode 100755 run.sh create mode 100755 scripts/configure.sh create mode 100755 scripts/run.sh diff --git a/.gitignore b/.gitignore index 32858aa..d702569 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1 @@ -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +release diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3fd05ec --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM java:7-jdk +MAINTAINER gdubina@dataart.com + +RUN apt-get update +RUN apt-get install net-tools + +ADD https://mobicents.ci.cloudbees.com/view/MediaServer/job/RestComm-MediaServer-4.x/lastSuccessfulBuild/artifact/bootstrap/target/restcomm-media-server.zip /tmp/restcomm-media-server.zip + +ADD https://mobicents.ci.cloudbees.com/view/MediaServer/job/RestComm-MediaServer-4.x/lastSuccessfulBuild/artifact/media-version.txt /tmp/media-version.txt + +ENV work_dir /opt/restcomm-media-server + +RUN unzip /tmp/restcomm-media-server.zip -d /opt && \ + chmod +x $work_dir/bin/run.sh && \ + rm /tmp/restcomm-media-server.zip && \ + mv /tmp/media-version.txt $work_dir + +ADD scripts/configure.sh $work_dir +ADD scripts/run.sh $work_dir + +WORKDIR $work_dir +CMD ./run.sh + diff --git a/README.md b/README.md index dd4f021..f0479d5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,20 @@ -# mediaserver-docker -Docker Image for RestComm Media Server at https://github.com/RestComm/mediaserver +# Restcomm MediaServer docker container + +Restcomm mediaserver repo - https://github.com/RestComm/mediaserver + +###Supported env variables + +1. To modify properties in `server-beans.xml` you can use the following template `PROPERTY_xmlpropname`. **Example:** PROPERTY_lowestPort, PROPERTY_highestPort + +2. if you run docker container with `--net=host` you should setup `USE_HOST_NETWORK=true`. in this case mediserver will be bound to `eth0` ip address + +### Run command example + +```shell +docker run --net host -d \ + --name restcomm-mediaserver \ + -e PROPERTY_lowestPort=64000 \ + -e PROPERTY_highestPort=65500 \ + -e USE_HOST_NETWORK=true \ + -it restcomm-mediaserver +``` diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..14f3d71 --- /dev/null +++ b/build.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker build -t restcomm-mediaserver . + +VERSION=`curl -s https://mobicents.ci.cloudbees.com/view/MediaServer/job/RestComm-MediaServer-4.x/lastSuccessfulBuild/artifact/media-version.txt` +echo "MediaServer build version: $VERSION" + +docker tag -f restcomm-mediaserver:latest restcomm-mediaserver:$VERSION + diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..3ce46e0 --- /dev/null +++ b/run.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +docker rm -f restcomm-mediaserver + +docker run --net host -d \ + --name restcomm-mediaserver \ + -e PROPERTY_lowestPort=64000 \ + -e PROPERTY_highestPort=65500 \ + -e USE_HOST_NETWORK=true \ + -it restcomm-mediaserver diff --git a/scripts/configure.sh b/scripts/configure.sh new file mode 100755 index 0000000..f9927cd --- /dev/null +++ b/scripts/configure.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +BASE_DIR=$work_dir +CONFIG_FILE=$BASE_DIR/deploy/server-beans.xml + +if [ -n "$USE_HOST_NETWORK" ]; then + LOCAL_IP=`ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'` + PROPERTY_bindAddress=$LOCAL_IP + PROPERTY_localBindAddress=$LOCAL_IP +fi + +set_xml_property () { + local property=$1 + local new_value=$2 + local xml_file=$3 + sed -i "s|.*|$new_value|" $xml_file +} + +echo "********************************" +echo "*** Configure media server ***" +echo "********************************" + +for i in $( set -o posix ; set | grep ^PROPERTY_ | sort -rn ); do + reg=$(echo ${i} | cut -d = -f1 | cut -c 10-) + val=$(echo ${i} | cut -d = -f2) + + echo "Update property: $reg -> $val" + + set_xml_property $reg $val $CONFIG_FILE +done diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100755 index 0000000..6f89b23 --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +. configure.sh + +./bin/run.sh