환경세팅

[Docker/NestJS] NestJS 프로젝트를 Docker로 배포하기 위한 Dockerfile 작성

ohyujeong 2022. 2. 20. 13:42

 

Docker는 Dockerfile을 읽고 image를 생성한다.

이 image를 pull 받고 컨테이너를 생성해서 실행하면 Docker를 통해 배포되는 것이다.

 

Dockerfile은 무작정 복붙하면 안 되고, 자신의 프로젝트 환경에 맞게 작성해야 한다!! !!!

 

1. Dockerfile 작성

//사용하는 node 버전 작성
FROM node:14

//COPY, ADD, RUN 등이 실행되는 디렉토리 경로 작성
WORKDIR /docker-practice-app

//이미지로 복사하려는 파일 작성
COPY package.json /docker-practice-app/package.json

//이미지 실행시 사용될 명령어 작성
RUN npm install

//COPY 명령어와 유사, 이미지로 복사하려는 파일 작성
ADD . /docker-practice-app

//도커 컨테이너가 실행되었을 때 요청을 기다리고 있는(Listen) 포트 지정
EXPOSE 3000

//nestjs 실행 명령어
CMD npm run start

 

2. docker image 생성

docker build -t docker-practice-app .

 

3. docker container 생성 후 실행

docker run --rm -d -p 3000:5000/tcp docker-practice-app:latest

--rm : 도커 컨테이너가 멈췄을 때 해당 컨테이너를 삭제시킴

-d : 컨테이너가 백그라운드에서 실행됨(터미널 종료해도 실행되게 해줌)

-p <호스트 포트번호>:<컨테이너 포트번호>/protocol :

외부에서 내부 도커 컨테이너로 접속할 수 있도록 포트 포워딩을 실시함 

 

-p 3000:5000/tcp 를 작성함으로써, 3000번 tcp 포트를 입력하면, 도커 내부의 5000번 tcp 포트로 연결된다.

해당 프로젝트는 5000번 포트를 사용하고 있기 때문에 3000번 포트를 통해 5000번으로 연결시켜준거다.

 

 

docker image 생성 후 -> dockerhub으로 push -> ec2에서 docker 설치 후, dockerhub pull -> 컨테이너 실행

하면 배포가 완료된다.

 

처음엔 dockerfile 어떻게 작성해야 되는지 모르겠어서 엄청 헤맸는데.. 차근차근 하니까 뭐가 되긴 돼서 신기하다..

'환경세팅' 카테고리의 다른 글

[AWS/NestJS] AWS에 NestJS,MongoDB 설치  (0) 2022.02.03