Nodejs Docker twitch 다운로드 서버 만들기
목차
개발의 목적
예전에 만든 트위치 다운로드 프로그램은 잘쓰고 있지만 프로그램 사용을위해 ffmpeg나 도커를 설치하는 과정이 간편하게 생각난 영상을 저장하기에는 너무나 번거로웠다. 그래서 ftp나 iis처럼 서버기반으로 만들면 좋을 것 같아 jade와 기존 프로그램을 합쳐서 웹페이지에서 입력을 받고 다운로드까지 해주는 서버를 만들었다. 다만 아직은 jade에 익숙하지않아 UI가 단순하고 다운로드가 얼마나 진행되는지 알 방법이 없다는 게 큰 단점인 것 같다. 이번 기회에 jade나 express에 대해 좀 더 배우고 다음 프로젝트에서도 많이 사용해봐야겠다.
결론
사이트 접속 -> 링크 입력 -> 다운로드까지는 순조롭게잘되지만 다운로드의 진행률, 오류 핸들링, 보안적인 부분에서는 좀 더 공부를 해서 준비해야할 것 같다. 하지만 jade나 웹을 통한 입출력에 대해서는 많이 공부할 수 있었다. 게다가 도커의 장점을 살려서 도커와 외부포트만 준비한다면 어디서든지 오류없이 쉽게 사용할 수 있다는 것이 큰 장점이라고 생각한다.
외부링크
출력결과
개발에 사용할 도구들
Docker
Docker는 기존 sudo npm install ****
처럼 프로그램/모듈을 설치하는 것이 아닌 이미 세팅된 프로그램을 리눅스 컨테이너로 불러와 사용하는 것이다. 그 덕분에 세팅하는 시간도 줄어들고 프로그램을 관리할때도 장점이 많다. 다만 컨테이너별로 IP가 할당되기에 다른 컨터이너와 통신을 하려면 조금 까다라운 부분도 있다. 필자도 Docker 장점을 처음에는 잘 몰랐지만 이번에 개발을 하며 Docker을 편리함을 많이 느낄 수 있었다.
Visual Studio Code
Visual Studio Code는 리눅스 리눅스의 Vim같은 텍스트 에디터지만 Visual studio처럼 인텔리센스와 내장된 터미널이 있다는 것이 큰 장점이다. 다만 자바나 파이썬같은 컴파일러는 언어마다 따로 설치해야한다. Visual Studio Code는 어디까지나 쉽게 코딩하고 디버깅할 수 있게 도와주는 도구지 IDE가 아니다! 필자도 Visual Studio Code의 여러 종류의 플러그인을 같이 사용해서 다재다능하게 사용할 수 있다는 점이 강점이라고 생각한다.
개발 과정
Nodejs 파일 준비
1 | // 개발폴더 생성, views 폴더도 개발폴더안에 만든다. |
1 | // index.js |
운영체제에 ffmpeg를 준비하고 도커화하기전에 작동이 잘되는지 확인하자
Doker 준비
Visualcode에서 명령창을 열어서 Dockerfiles to workspace를 진행한다.
dockerfile에 다음처럼 추가한다.
1 | COPY --from=mwader/static-ffmpeg:4.4.0 /ffmpeg /usr/local/bin/ |
다음 터미널에서 다음처럼 이미지를 빌드하고 시작한다.
1 | docker build -t "webtwitchdownloader" . |
시행착오
- dockerfile에 꼭 ffmpeg를 다운로드 받도록 설정해야합니다.
1 | COPY --from=mwader/static-ffmpeg:4.4.0 /ffmpeg /usr/local/bin/ |
- 다운시간이 꽤 걸립니다. 콘솔창에서 에러내용이나 다운중이라고 나오니 여유를 가지고 기다려합니다. 만약 쓰레드가 많은 컴퓨터라면 쓰레드랑 인터넷을 여유있게주는 것도 속도향상에 도움이됩니다.
- 원본 방송에서 저작권이나 기타이유로 음원이 삭제된 부분은 다운로드가 진행되지않습니다!
- 도커허브에서 링크를 가져올때 public 링크를 가져와야합니다! 아님 로그인이후에 접속이 되지않습니다!
참고한 자료들과 같이보기 좋은 자료들
- https://bitlog.tistory.com/101
- https://hianna.tistory.com/349
- https://medium.com/@aksgh10230069/node-js-file-download-582dc7871b4
- https://naltatis.github.io/jade-syntax-docs/#basics
- https://itholic.github.io/js-form/
- https://stackoverflow.com/questions/17762188/simple-form-node-js-application
- https://wayhome25.github.io/nodejs/2017/02/18/nodejs-10-express-template-engine-jade/