HLS protocol ์ฌ์ฉํด์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ๊ตฌํ์ค์ธ๋ฐ ๋จ์ํ nest.js์์ ์๋ฒ ๋๋ฆฐ๋ค๊ณ ํด์ ์ค์๊ฐ์ผ๋ก ์คํธ๋ฆฌ๋ฐ ๋๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๋ ๊ฒ์ด ์๋๋ผ RTMP Server๋ฅผ ์ค์ ํด์ผํ๋๋ฐ, ์ด๋ ์ค์๊ฐ ๋ฐ์ดํฐ๋ RTMP๋ก ๋ฐ๊ฒ ๋๋ค.
HLS๋ก ๋ณํํด์ ํด๋ผ์ด์ธํธ์ธก์์ ์จ์ผํ๊ธฐ ๋๋ฌธ์ Nginx๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ Docker๋ฅผ ์ฌ์ฉํด์ ์ปจํ
์ด๋ํ ์์ผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.
![](https://velog.velcdn.com/images/choisooyoung-dev/post/9576c1a0-f051-4956-a41f-3f0ab62afe1c/image.png)
๐ณ Docker?
- ์ ํ๋ฆฌ์ผ์ด์
์ ํจํค์ง ํด์ค๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ๋์ ํ์ํ ๋ฐํ์ ํ๊ฒฝ์ ๋ชจ๋ ๊ฒ๋ค์
์ปจํ
์ด๋
์์ ๋ด์์ ์ธ ์ ์๊ฒ ํด์ค๋ค.
๐ Container?
- ๊ฐ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ๋ฆฝ๋ ํ๊ฒฝ์์ ๊ตฌ๋๋ ์ ์๊ฒ ํด์ค๋ค.
VM์ ์ญํ ๊ณผ ๋น์ทํ๊ฑฐ ๊ฐ์๋ฐ?
VM vs Container
![](https://velog.velcdn.com/images/choisooyoung-dev/post/eca4a030-8300-42df-83bb-6b14a5399d51/image.png)
- ํ๋์ ์ด์์ฒด์ ์์์ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๊ฐ์ ๊ณ ๋ฆฝ๋ ๋ค๋ฅธ ํ๊ฒฝ์์ ๊ตฌ๋ํ๊ธฐ ์ํด์๋ VM์ ์ฌ์ฉํด์ ๊ตฌ๋ํด์ผ๋ง ํ์๋ค.
- ๊ทธ์น๋ง VM์ ๊ต์ฅํ ๋ฌด๊ฒ๋ค โ ์ด์์ฒด์ ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
๋ง๋ค ํฌํจํ๊ธฐ ๋๋ฌธ์ด๋ค.
- Container์ ์ญํ ๋ ๋์ผํ์ง๋ง, ํ๋์จ์ด์ ์ค์น๋ ์ด์์ฒด์ (Host OS)์์ ์ปจํ
์ด๋ ์์ง๋์ด๋ผ๋ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ๊ฐ๋ณ์ ์ธ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด์ ๊ฐ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ๋ฆฝ๋ ํ๊ฒฝ์์ ๊ตฌ๋๋ ์ ์๊ฒ ํด์ค๋ค. โ ์ํํธ์จ์ด =
๐ณ DOCKER
- ์ด์์ฒด์ ๊ฐ ๋ฏธํฌํจ๋๋ค.(๊ฐ๋ณ๋ค!)
- ์ฆ, VM๋ณด๋ค ์กฐ๊ธ ๊ฒฝ๋ํ๋ ์ปจ์
์ด ๋ฐ๋ก Container์ด๋ค.
๋ฐ๋ผ์ Docker์ ์ญํ ์?
- ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ ๋ฐฐํฌํ๊ณ ๊ตฌ๋ํ๋ ์ญํ ์ด๋ค.
๐ Container ๋ง๋ค๊ธฐ ์ํด ์์์ผ ํ ์ฉ์ด๋ค
๐ Dockerfile
- ์ปจํ
์ด๋๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค์ง์ ๋ํ ์ค๋ช
์
- ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ๋์ ์ํ ํ์ผ์ ์ด๋ค๊ฒ ์๋์ง, ์ด๋ค ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ ํ๋์ง, ์ธ๋ถ dependencies์ ๋ํด ๋ช
์ํ๋ค๋์ง, ํ์ํ ํ๊ฒฝ๋ณ์ ์ค์ , ์ด๋ป๊ฒ ๊ตฌ๋ํ๋์ง์ ๋ํ ์คํฌ๋ฆฝํธ๋ ํฌํจ๋ ์ ์๋ค.
์ด Dockerfile ์ฌ์ฉํด์ docker์ image๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ธ image
- ์ ํ๋ฆฌ์ผ์ด์
์คํํ๋ ๋ฐ์ ํ์ํ ์ฝ๋, ๋ฐํ์ ํ๊ฒฝ, ์์คํ
ํด, ์์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ๋ชจ๋ ์ธํ
์ ํฌํจํ๋ค.
- ํ์ฌ ์คํ๋๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ํ๋ฅผ ์บก์ณํด์ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ๋๋ค.
- ๋ถ๋ณ์ ์ํ
๐ Container
- ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ณ์ ์ธ ํ์ผ ์์คํ
์์์ ์คํํ ์ ์๋ ๊ฒ์ ๋งํ๋ค.
๐ Container ์์ฑ
- ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ๋ฉด ์ปจํ
์ด๋๊ฐ ์์ฑ๋๋๋ฐ ๋ก์ปฌ์ ์๋ ์ด๋ฏธ์ง๋ฅผ Container registry์ pushํ๊ฒ ๋๋ฉด ์๋ฒ๋ pull ๋ฐ์ ์ฌ์ฉ, ์คํํ๋ค. โ
๐ณ DOCKER
์ ์ญํ
1) ๋์ปค ์ด๋ฏธ์ง ์์ฑ
docker build -f Dockerfile -t ์์ฑ๋ ์ด๋ฏธ์ง์ ์ด๋ฆ .
docker build
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ช
๋ น์ด
-t
์ด๋ฏธ์ง์ ํ๊ทธ๋ฅผ ๋ฌ์์ค๋ค(๊ธฐ๋ณธ๊ฐ์ latest) ex)docker-prac:ver1
![](https://velog.velcdn.com/images/choisooyoung-dev/post/ebddc72b-d7c7-4ab8-9eb2-c81f68eee1ce/image.png)
2) ๋ก์ปฌ์ ๋ง๋ค์ด์ง ๋์ปค ์ด๋ฏธ์ง ํ์ธ
docker images
![](https://velog.velcdn.com/images/choisooyoung-dev/post/f949825a-cb39-4be1-8b83-303620c012b9/image.png)
3) ๋์ปค ์คํํ๊ธฐ
docker run -d -p ๋ก์ปฌ์์ ์ฐ๋ port๋ฒํธ:๋์ปค ์ปจํ
์ด๋์์ ์ฐ๋ port๋ฒํธ ์์ฑ๋ ์ด๋ฏธ์ง ์ด๋ฆ
docker run -d -p 8080:8080 docker-prac
-d
์ปจํ
์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ์์ผ์ค๋ค.
-p
ํธ์คํธ์ 8080๋ฒ ํฌํธ์ ์ปจํ
์ด๋์ 8080๋ฒ ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ธ๋ถ์ ๋
ธ์ถ์์ผ์ค๋ค.
โ http://ํธ์คํธ IP:8080 ์ ์
- ์คํํ๋ฉด ์ปจํ
์ด๋์ ์์ด๋๊ฐ ์ ์ฒด๊ฐ ์ถ๋ ฅ๋๋ค.
![](https://velog.velcdn.com/images/choisooyoung-dev/post/ae606107-96b7-46b9-a7eb-da990779140e/image.png)
4) ํ์ฌ ์คํ์ค์ธ ์ปจํ
์ด๋์ ๋ฆฌ์คํธ ํ์ธํ๊ธฐ
docker ps
![](https://velog.velcdn.com/images/choisooyoung-dev/post/5d9e5dc9-9ca2-4a8b-9503-73990902de7f/image.png)
5) ์คํ์ค์ธ ์ปจํ
์ด๋์ log ํ์ธ
docker logs ID๊ฐ
- ์ด๋ ID๊ฐ์
docker ps
๋ช
๋ น์ด์ ๋์จ ID ๊ฐ์ ์
๋ ฅํ๋ฉด ๋๋ค.
![](https://velog.velcdn.com/images/choisooyoung-dev/post/7254eed9-e65f-4471-9521-d70beafdf88d/image.png)