NestJS 애플리케이션 Docker로 배포하기

2023. 5. 1. 00:17WEB개발/TIL

반응형

1. Docker hub에서 repository 생성

DockerHub: https://hub.docker.com/

1.1. DockerHub 로그인 후, Repositories에 들어가서 Create repository 클릭

1.2. Repository Name(생성할 이미지명과 일치해야 함), Private 설정 후 Create하기

 

 

2. 프로젝트 폴더에 Dockerfile 생성

FROM node:[버전번호]-alpine
WORKDIR /var/app
COPY . .
RUN npm run build
EXPOSE [포트번호]
CMD node dist/main.js

FROM: 생성할 이미지에 베이스가 될 이미지 작성

WORKDIR: 작업 디렉토리 전환

COPY: 현재 디렉토리에서의 모든 파일(호스트)을 해당 디렉토리(이미지)에 모두 복사

COPY <src><dest>
# src: 호스트 운영체제 경로
# dest: 이미지 상에서의 경로

RUN: 컨테이너 내부에서 명령어 실행

EXPOSE: 노출할 포트 지정

CMD: 해당 이미지로 컨테이너를 실행할 때 어떤 명령어를 수행할 것인지 결정

 

 

3. docker Image build/push

참고: https://yeko90.tistory.com/entry/how-to-upload-image-in-docker-hub

Dockerfile이 위치한 경로에서 명령어 작성

3.1. 도커 이미지 생성: build

# docker build -t [DockerHub ID]/[ImageName] [Dockerfile경로]
docker build -t yejii/ping-pong .

3.2. 생성한 도커 이미지 도커 레지스트리에 업로드: push

# 도커 레지스트리(Docker Registry)에 로그인하기
docker login

# docker push [DockerHub ID]/[ImageName]
docker push yejii/ping-pong

 

 

4. ubuntu에 docker 설치하기

참고: https://docs.docker.com/engine/install/ubuntu/

4.1. ubuntu 접속

4.2. 리포지토리 설정

 4.2.1. apt 업데이트 및 설정

sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg

 4.2.2. Docker의 공식 GPG key 추가

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

 4.2.3. 리포지토리 설정

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4.3. Docker 설치

 4.3.1. apt 업데이트

sudo apt-get update

 4.3.2. Docker 설치(최신버전/특정버전)

# Latest
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Secific version
# 1. 설치 가능한 버전 출력
apt-cache madison docker-ce | awk '{ print $3 }'
# 2. 특정 버전 설치
VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy  # 예시버전
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

 4.3.3. hello-world 이미지를 실행하여 Docker가 성공적으로 설치됐는지 확인

sudo docker run hello-world

 

5. Docker 컨테이너 생성 및 실행

# 도커 로그인
sudo docker login

# 도커 레지스트리에서 이미지 가져오기
# sudo docker pull [image-name]
sudo docker pull yejii/ping-pong

# 이미지 확인
sudo docker images

# 이미지를 사용하여 컨테이너 생성 및 실행
# sudo docker run --name [container-name] -p [host-port]:[container-port] [image-name]
sudo docker run --name ping-pong -p 3001:3001 yejii/ping-pong

 

 

해당 ip와 포트 번호로 잘 실행되는지 확인하면 끝!

반응형

'WEB개발 > TIL' 카테고리의 다른 글

Context Switching과 PCB/TCB  (0) 2023.05.08
프로그램, 프로세스, 스레드  (0) 2023.05.08
ORM - JPA  (0) 2023.03.27
Lombok  (0) 2023.03.24
Persistence Framework와 Mybatis  (0) 2023.03.24