ゼロからの開発日誌

日々の学びなどを中心に

DockerでNode/Nginx/Janusを単体で動かす。NginxでJanusのデモページをホスティングする。

Node.js

Dockerfile作成

FROM node:16.16.0-alpine
WORKDIR /usr/src/app

RUN apk update && apk add bash

CMD ["/bin/bash"]

ビルド: 上で作成したDockerfileからイメージを作成する

$ docker image build -t node_img:latest .
👇
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
node_img     latest    13651deec3a6   4 days ago   117MB

コンテナ起動: 上で作成したイメージからコンテナを作成し、起動する

$ docker run --name node_cnt -it node_img
bash-5.1#
bash-5.1# pwd
/usr/src/app
bash-5.1# exit
exit
👇
$ docker ps -a
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS                     PORTS     NAMES
6e198779aa4e   node_img   "docker-entrypoint.s…"   17 seconds ago   Exited (0) 9 seconds ago             node_cnt

以上で、docker上でNode.js(bashも使える)環境が整う。

Nginx

Dockerfileの作成

FROM nginx
CMD ["nginx", "-g", "daemon off;"]

ビルド: 上で作成したDockerfileからイメージを作成する

$ docker image build -t nginx_img:latest .
👇
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx_img    latest    53685b45547d   2 weeks ago   142MB

コンテナ起動: 上で作成したイメージからコンテナを作成し、起動する

$ docker run --name nginx_cnt -d -p 8080:80 nginx_img:latest
571c9fb70e7ad4632384b97c6f4e7cd14dfc1a43887a5966ddd8656a25f6cdb1
👇
$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                  NAMES
571c9fb70e7a   nginx_img:latest   "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->80/tcp   nginx_cnt

以上で、docker上でNginx(ブラウザでhttp://localhost:8080/にアクセスするとnginxが起動している)環境が整う。

Janus

Dockerfileの作成

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update 

RUN apt install -y sudo make wget git python3-pip

RUN apt install -y \
      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 libtool automake

# libnice
RUN pip3 install meson ninja && \
    cd /root && \
    git clone https://gitlab.freedesktop.org/libnice/libnice && \
    cd libnice && \
    meson --prefix=/usr build && ninja -C build && sudo 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 && sudo make install

# janus-gateway
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

ENTRYPOINT ["/opt/janus/bin/janus"]

ビルド: 上で作成したDockerfileからイメージを作成する

$ docker image build -t janus_img:latest .
👇
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
janus_img    latest    36355143bf20   3 minutes ago   819MB

コンテナ起動: 上で作成したイメージからコンテナを作成し、起動する

$ docker run --name janus_cnt -d -p 8088:8088 janus_img:latest
073bb8e0a550ca4216573504760026d5afa1c396becf030e8d3d685545d83b26
👇
$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                    NAMES
073bb8e0a550   janus_img:latest   "/opt/janus/bin/janus"   8 seconds ago   Up 7 seconds   0.0.0.0:8088->8088/tcp   janus_cnt

以上で、docker上でJanus(ブラウザでhttp://localhost:8088/janus/infoにアクセスするとJSONが返ってくる)環境が整う。

NginxでJanusのデモページをホスティングする

前提: NginxのDockerfileと同じ階層にhtml/videoroomtest.htmlを配置しておく

JanusとNginxを起動

# Nginxを起動
$ docker run -v `pwd`/html:/usr/share/nginx/html --name nginx_cnt_demo -d -p 8080:80 nginx_img:latest
8b95ca497f08cd7db797354693ef11821add4a599800aa6e51e65e1a32dfbeec

# Janusを起動(デモページのStartボタンが機能するようになる)
$ docker run --name janus_cnt_demo -d -p 8088:8088 janus_img:latest
7a11a39c371a067e290f6750d5eda9cb96f1a2ab910c7bdcbe1c23bbba337749

👇
$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED              STATUS          PORTS                    NAMES
7a11a39c371a   janus_img:latest   "/opt/janus/bin/janus"   About a minute ago   Up 59 seconds   0.0.0.0:8088->8088/tcp   janus_cnt_demo
8b95ca497f08   nginx_img:latest   "/docker-entrypoint.…"   2 minutes ago        Up 2 minutes    0.0.0.0:8080->80/tcp     nginx_cnt_demo

以上で、docker上でNginxでJanusのデモページ(http://localhost:8080/videoroomtest.html)を動かす環境が整う。