이번 시간에는 Docker를 이용해서 node.js(express) 애플리케이션을 배포하는 방법에 대해서 알아보겠습니다.
1. Dockerfile과 .dockerignore 파일을 만들기
프로젝트 루트에 Dockerfile과 .dockerignore 파일을 만듭니다.
Dockerfile
FROM node:20
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --production
COPY . .
ENV NODE_ENV=prod
EXPOSE 3000
CMD ["node", "main.js"]
- FROM node:20: node.js 버전
- ENV NODE_ENV=prod: .env 파일 설정
.dockerignore
node_modules
Dockerfile
.dockerignore
2. 서버에 docker를 설치합니다.
2-1. 패키지 리스트 업데이트
$ sudo apt-get update
2-2. https 패키지 설치
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
2-3. docker repository gpg키 설정
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
2-4. docker repository 등록
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
2-5. 패키지 리스트 업데이트
$ sudo apt-get update
2-6. docker 설치
$ sudo apt-get install docker-ce
2-7. docker 버전 확인
$ docker --version
docker 설치가 완료됐습니다.
3. 빌드 서버에 프로젝트 업로드
4. 서버에 docker-image를 만듭니다.
4-1. Docker-image를 만듭니다.
$ sudo docker build -t taehoedu/nodedeploy:1.0 .
- taehoedu: dockerhub 계정ID
- nodedeploy: docker-image 이름
- 1.0: 태그
※ 참고. docker build 명령어에서 캐시를 삭제하려면 --no-cache 옵션을 사용할 수 있습니다. 이 옵션은 Docker가 빌드를 할 때 이전 빌드의 캐시를 사용하지 않도록 강제합니다.
$ sudo docker build --no-cache -t taehoedu/nodedeploy:1.0 .
4-2. Docker-image 목록을 확인합니다.
$ sudo docker images
5. Docker-container를 생성해서 node.js app을 실행
$ sudo docker run --name node -d -p 3000:3000 taehoedu/nodedeploy:1.0
- node은 docker-container 이름입니다.
6. docker-container 목록을 확인합니다.
6-1. 실행 중인 docker-container만 목록을 합니다.
$ sudo docker ps
6-2. 전체 docker-container 목록을 합니다.
$ sudo docker ps -a
7. docker-container 중지 및 재실행 합니다.
7-1. 실행 중인 docker-container 중지
$ sudo docker stop node
- 'node'은 실행 중인 docker-container 이름
7-2. docker-container 재실행
$ sudo docker start node
- 'node'은 docker-container 이름
17. docker-container 삭제
$ sudo docker remove node
- 'node'은 docker-container 이름
'node.js' 카테고리의 다른 글
실행 환경에 따른 .env 파일 분리 하는 방법 (0) | 2024.12.13 |
---|