'라이브러리패키지'에 해당되는 글 1건

  1. 2021.12.08 [도커] fastify사용한 웹 애플리케이션 만들기

fsatify : 웹 프레임워크

https://www.fastify.io/docs/latest/Getting-Started/

 

Getting-Started

Fast and low overhead web framework, for Node.js

www.fastify.io

강의안과 다르게 cmd창에 npm을 치면 명령어가 없다고 나온다.

node.js를 설치해주면 cmd에 npm 치면 옵션들이 쭉 나온다. 설치완료된 것이다.

* npm은 node package manager의 뜻으로 노드 패키지 관리자 역할을 한다.

 

https://nodejs.org/ko/download/

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

fastify 라이브러리 패키지 설치

npm i fastify --save

브라우져에 접속하면 app.js 파일로 만들어놓은 페이지가 잘 출력된다.

이를 도커 이미지로 빌드하는데 시간이 꽤 걸렸다. 796.8s 이니깐 대략 13분 좀 넘게 소요되었네

빌드한 이미지를 실행하려고 했는데, 오류가 나서 살펴보민

Error에 module이 없다는 것인데, VSCode로 보니 오타가 있었다. 뒤에 QQ를 빼고 다시 실행해주니 잘 실행되고, 웹접속도 성공하였다.

D:\05.Lab\01.test\web>docker run -p 3000:3000 web
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '/usr/src/app/app.jsQQ'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

D:\05.Lab\01.test\web>docker images

D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>docker run -p 3000:3000 web
{"level":30,"time":1638947532214,"pid":8,"hostname":"1a97ede7f0a9","msg":"Server listening at http://0.0.0.0:3000"}
{"level":30,"time":1638947532215,"pid":8,"hostname":"1a97ede7f0a9","msg":"server listening on http://0.0.0.0:3000"}
{"level":30,"time":1638947532503,"pid":8,"hostname":"1a97ede7f0a9","reqId":"req-1","req":{"method":"GET","url":"/","hostname":"127.0.0.1:3000","remoteAddress":"172.17.0.1","remotePort":52382},"msg":"incoming request"}
{"level":30,"time":1638947532535,"pid":8,"hostname":"1a97ede7f0a9","reqId":"req-1","res":{"statusCode":200},"responseTime":20.34059999883175,"msg":"request completed"}

기존 테스트 중지를 안하니 오류가 발생

C:\Users\move_>docker run -p 3001:3000 web
docker: Error response from daemon: driver failed programming external connectivity on endpoint hungry_satoshi (3220b1383366fafc9092bc9f3d1743ca9d080e512f7b739826f4b760d22405c8): Bind for 0.0.0.0:3001 failed: port is already allocated.

그런데 기존 테스트때문이 아니었음

껐음에도 동일한 오류가 발생해서 혹시 내가 할당하는 포트의 충돌인가 싶어서 3002번으로 변경하였더니

웹도 잘 출력되고 cmd창에 로그도 잘 찍혔다.

C:\Users\move_>docker run -p 3001:3000 web
docker: Error response from daemon: driver failed programming external connectivity on endpoint beautiful_tereshkova (b6841b2541526d8a4f92368b738311a6d6420946329b1e45892756d068f414f9): Bind for 0.0.0.0:3001 failed: port is already allocated.

C:\Users\move_>docker run -p 3002:3000 web
{"level":30,"time":1638948253156,"pid":8,"hostname":"cfbf8a5cf3c6","msg":"Server listening at http://0.0.0.0:3000"}
{"level":30,"time":1638948253158,"pid":8,"hostname":"cfbf8a5cf3c6","msg":"server listening on http://0.0.0.0:3000"}
{"level":30,"time":1638948263812,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-1","req":{"method":"GET","url":"/","hostname":"127.0.0.1:3002","remoteAddress":"172.17.0.1","remotePort":49984},"msg":"incoming request"}
{"level":30,"time":1638948263832,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-1","res":{"statusCode":200},"responseTime":18.8648000061512,"msg":"request completed"}
{"level":30,"time":1638948264280,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","req":{"method":"GET","url":"/favicon.ico","hostname":"127.0.0.1:3002","remoteAddress":"172.17.0.1","remotePort":49984},"msg":"incoming request"}
{"level":30,"time":1638948264281,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","msg":"Route GET:/favicon.ico not found"}
{"level":30,"time":1638948264283,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","res":{"statusCode":404},"responseTime":2.851500004529953,"msg":"request completed"}

정리 : 이미지 만들 때, dockerfile을 가지고 만든다

 

Posted by 유영훈
,