배포자동화(CI/CD) - Github Actions/Nuxtjs/Docker/EC2
해당 글을 기반으로 github actions를 이용해 네이버 클라우드 우분투 인스턴스에 docker를 통한 nestJS 배포를 했다.
우선 깃허브에 프로젝트가 올라가 있는 상태이다.
GitHub - boostcampwm2023/iOS10-OpenList: 오리 꽥꽥 🦆
우선, 필자는 이 글을 읽는 당신이 docker가 뭔지 알고 있고, docker image, container, build, compose 등 기본 사용법은 숙지하고 있다고 가정하겠다. 만약, 이에 대한 개념이 부족하다면 개념을 학습하고 오길 바란다. 유튜브에 좋은 강의들이 많다.
폴더 구조는 다음과 같다
필자의 프로젝트는 루트에 server폴더가 있고 거기 안에 nest프로젝트랑 도커가 있는 상태이다.
우선 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"]