Web RTC JanusコンテナをDockerfileで作成

## はじめに
前回、[WebRTC JanusをDockerコンテナで構築](https://qiita.com/pyuta/items/fb209de51140b6188e29)の投稿で、WebRTC JanusのDockerコンテナを作成しました。
この手順をDockerfile化したので[Git Hub](https://github.com/pyuta-gh/janus-local-run)に公開します。

## Docker Fileクローン
```shell
git clone git@github.com:pyuta-gh/janus-local-run.git
cd janus-local-run
```
## コンテナイメージ作成
```shell
docker build -t image-name .
```

## コンテナ実行
```shell
docker run -itd -p 8088:8088 -p 8000:8000 --name janus -d image-name
```

## Janusの動作確認
ブラウザからデモページ(`http://127.0.0.1:8000/videoroomtest.html`)にアクセスし、Janusのビデオルーム等が利用できることを確認する。
右上のSTARTボタンをクリックし、ルーム名を入力すると、ブラウザにパソコンのカメラ映像が表示されます。
![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117828/5ed9c8a0-7a89-eb97-69f5-da2ffbc20690.jpeg)
![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117828/e740d95c-d197-f077-29a0-4d3014c58a9e.jpeg)
![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117828/2b2ff179-2f13-cc6f-ae68-da55c2210322.jpeg)

## DockerFile内容
```shell
# Base Image Debian
FROM debian

# OS Update
RUN apt-get update

# Required library installation
RUN apt install libmicrohttpd-dev libjansson-dev libssl-dev \
 libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev \
 libcurl4-openssl-dev liblua5.3-dev libconfig-dev \
 pkg-config gengetopt libtool automake gtk-doc-tools doxygen \
 graphviz libnanomsg-dev cmake -y --fix-missing

# Install the command used for installation
RUN apt-get install -y wget && \
 apt-get install vim -y && \
 apt-get install git -y && \
 apt-get install -y curl

# libnice
RUN PATH="/usr/local/bin:$PATH"
RUN yes | apt install python3-pip
RUN yes | pip3 install meson
RUN yes | pip3 install ninja
RUN cd /root && \
  git clone https://gitlab.freedesktop.org/libnice/libnice && \
  cd ./libnice && \
  meson --prefix=/usr build && ninja -C build && ninja -C build install

# libsrtp
RUN cd /root && \
  wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz && \
  tar xfv v2.2.0.tar.gz && \
  cd libsrtp-2.2.0 && \
  ./configure --prefix=/usr --enable-openssl && \
  make shared_library && make install

# usrsctp
RUN cd /root && \
  git clone https://github.com/sctplab/usrsctp && \
  cd ./usrsctp && \
  ./bootstrap && \
  ./configure --prefix=/usr --disable-programs --disable-inet --disable-inet6 && \
   make && make install

# libwebsockets
RUN cd /root && \
  git clone https://libwebsockets.org/repo/libwebsockets && \
  cd ./libwebsockets && \
  mkdir build && \
  cd ./build && \
  cmake -DLWS_MAX_SMP=1 -DLWS_WITHOUT_EXTENSIONS=0 \
  -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" .. && \
  make && make install

# Install the Janus server itself
RUN cd /root && \
  git clone https://github.com/meetecho/janus-gateway.git && \
  cd janus-gateway && \
  sh autogen.sh && \
  ./configure --prefix=/opt/janus && \
  make && \
  make install && \
  make configs

# Set up Janus Demo client
# node,npm
RUN apt-get install nodejs npm -y && \
  npm install n -g -y && \
  n stable && \
  apt purge -y nodejs npm

# Simple WEB server (local-web-server) installation
RUN npm install -g local-web-server -y

# Set Janus launch shell
RUN cd /root/janus-gateway/ && \
  touch run_janus.sh && \
  echo "#!/bin/sh" >>run_janus.sh && \
  echo "/opt/janus/bin/janus &" >>run_janus.sh && \
  echo "cd /root/janus-gateway/html" >>run_janus.sh && \
  echo "ws" >>run_janus.sh && \
  chmod 755 run_janus.sh

EXPOSE 8000 8088

USER root

CMD ["/root/janus-gateway/run_janus.sh"]
```