iT邦幫忙

2021 iThome 鐵人賽

DAY 27
1
Modern Web

後疫情時代的 WebRTC 微學習系列 第 27

Day27 [實作] 一對一視訊通話(7): 使用 Docker 封裝

首先我們需要有 Docker 環境,如果還沒有可以參考 Docker 安装

製作 Dockerfile

製作 dockerfile 我們需要先了解我們的程式是如何運行起來的。

  1. 要有 node.js 環境
  2. 有一個 package.json 的文件,用於描述我們的應用程式的依賴
  3. 執行 npm install 就會去把 package.json 中的依賴安裝起來
  4. 執行 node server.js 就能夠運行成功

了解這些步驟後我們就開始建立 Dockerfile

在資料夾內部建立 Dockerfile 文件,並編輯

❯ touch Dockerfile

我們的 docker image 的基礎 使用 node.js 環境,版本使用 LTS 也就是 14 版

FROM node:14

WORKDIR 指令可以指定工作目錄,可以理解為 shell 的 cd 指令

WORKDIR /usr/src/app

現在我們的 docker 容器中已經有了 node 及 npm 的環境,接下來我們要安裝我們應用程式所需要的依賴

COPY package*.json ./

RUN npm install

使用 COPY 來將本地文件複製到容器中 可以理解為 shell 的 cp

COPY . .

EXPOSE 通知 Docker 容器在運行時監聽指定的網絡端口。 也可以指定偵聽TCP還是UDP,默認值為TCP

EXPOSE 8088

CMD為執行中的容器提供初始指令。 Dockerfile 中只能有一個 CMD指令,這裡我們使用 node server.js 來啟動我們的伺服器

CMD [ "node", "server.js" ]

完整 Dockerfile 如下:

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8088
CMD [ "node", "server.js" ]

添加 .dockerignore 文件

❯  touch .dockerignore

在 .dockerignore 中加入以下內容,我們不需要把這些東西也包到容器中

node_modules
npm-debug.log

編譯 Docker image

完成 Dockerflie 後我們就可以來編譯映像檔,執行

❯ docker build . -t 1-on-1-webrtc

使用 docker run 來執行我們的程式

❯ docker run -d --name webrtc  -p 8088:8088 1-on-1-webrtc

打開瀏覽器 https://localhost:8088/ 測試看看

從 Github 抓下來測試

完整內容可以參考 Github

❯ git clone https://github.com/tc3oliver/1-on-1-webrtc.git
❯ cd 1-on-1-webrtc
❯ git checkout docker
❯ docker build . -t 1-on-1-webrtc
❯ docker run -d --name webrtc  -p 8088:8088 1-on-1-webrtc

上一篇
Day26 [實作] 一對一視訊通話(6): 關閉鏡頭或麥克風
下一篇
Day28 [實作] 一對一視訊通話(8): Docker compose 整合 TURN Server
系列文
後疫情時代的 WebRTC 微學習30

尚未有邦友留言

立即登入留言