개발이야기/Node&Nest

Nest.js를 Docker로 배포하기

Roslyn 2024. 1. 18. 16:11
반응형

먼저 프로젝트 루트에 Dockerfile 이란 파일을 만들어주자. (사실 파일이름은 아무렇게나 해도 상관없다.)

그런 다음 다음에 오는 내용을 작성해 주자.

FROM node:18
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD [ "npm", "start" ]

 

From은 사용할 이미지다.  node:18  이미지 사용을 지정했다.

이미지 내에서 사용할 작업 폴더는 WORKDIR로 지정한다.

COPY 명령을 통해 먼저 package.json 과 package-lock.json을 WORKDIR로 복사한다.

다음에 RUN 명령으로 npm install 명령어가 실행된다.

이제 COPY 명령어로 폴더내 모든 내용을 대상 WORKDIR로 복사하는데, 이때 .dockerignore 에 지정된 내용은 제외된다.

잊지말고 node_modules는 제외해 주자.

node_modules

.dockerignore 내용

 

이후에 npm run build로 build 명령을 수행해 주고, EXPOSE 명령으로 3000번 포트를 개방해 주었다.

CMD 명령으로 npm start 명령을 실행시키면 모든 작업은 마무리 된다.

 

다음 명령으로 Docker을 빌드해 주자.

docker buildx build --no-cache -t node:18 .

 

buildx로 build 하면서 타겟으로 node:18 이미지를 선택했다.

이제 파란색의 도커 컴파일 이미지가 출력될 것이다.

 

이제 도커를 실행해서 실제 서비스를 구동시켜 보자.

 

docker run -p 3000:3000 node:18

 

도커내 우분투의 3000번 포트를 현재 컴퓨터의 3000번 포트로 매칭하여 서비스가 구동된다.

 

docker 내에서 구동되는 모습

 

localhost:3000 번으로 접속한 모습

 

 

swagger이 잘 열리고 있다.

반응형