Github Action과 Docker를 이용한 CI/CD 구축 흐름

배포자동화(CI/CD) - Github Actions/Nuxtjs/Docker/EC2

해당 글을 기반으로 github actions를 이용해 네이버 클라우드 우분투 인스턴스에 docker를 통한 nestJS 배포를 했다.

우선 깃허브에 프로젝트가 올라가 있는 상태이다.

GitHub - boostcampwm2023/iOS10-OpenList: 오리 꽥꽥 🦆

배포할 프로젝트에 Dockerfile 세팅

우선, 필자는 이 글을 읽는 당신이 docker가 뭔지 알고 있고, docker image, container, build, compose 등 기본 사용법은 숙지하고 있다고 가정하겠다. 만약, 이에 대한 개념이 부족하다면 개념을 학습하고 오길 바란다. 유튜브에 좋은 강의들이 많다.

폴더 구조는 다음과 같다

스크린샷 2023-11-21 오후 9.38.57.png

필자의 프로젝트는 루트에 server폴더가 있고 거기 안에 nest프로젝트랑 도커가 있는 상태이다.

Dockerfile 생성

우선 NestJS를 실행하기 위한 도커 파일이다.

server/ 에 Dockerfile이라는 이름의 빈 파일을 만들어서 아래 내용을 넣어주자.

# Dockerfile

# Node.js 18 버전을 기반 이미지로 사용
FROM node:18

# /app 디렉토리를 생성
RUN mkdir -p /app

# 작업 디렉토리를 /app으로 설정
WORKDIR /app

# 현재 디렉토리의 모든 파일을 컨테이너의 /app/ 디렉토리에 복사
ADD . /app/

# 기존의 yarn.lock 및 package-lock.json 파일이 있으면 삭제
# 이는 종속성 관리를 위한 것으로, 최신 버전의 종속성을 설치하기 위함
RUN rm yarn.lock || true
RUN rm package-lock.json || true

# yarn을 사용하여 종속성 설치
RUN yarn

# 애플리케이션 빌드
RUN yarn build

# 호스트 주소를 0.0.0.0으로 설정 (모든 네트워크 인터페이스에서 애플리케이션에 접근 가능하게 함)
ENV HOST 0.0.0.0

# 3000번 포트를 컨테이너 외부에 노출
EXPOSE 3000

# 컨테이너가 시작될 때 실행할 명령어 설정
CMD [ "yarn", "start"]

.dockerignore 추가