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 |
---|