Skip to content

About

POPO NestJS API

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Repository files navigation

POPO Nest API

Logo

NestJS API for POPO @ PoApper
POPO, POstechian's POrtal
👉 POPO

About

POPO는 PoApper에서 개발하고, POSTECH 총학생회에서 운영하는 포털 사이트입니다. POPO를 통해 교내의 장소/장비를 예약하고, 자치단체 및 동아리 정보를 열람할 수 있습니다.

How to Deploy

POPO 어플리케이션은 Docker Container로 실행되고 있으며, Docker Swarm을 통해 오케스트레이션 되고 있다. Portainer라는 웹 도구를 사용해 컨테이너 환경을 제어하고 모니터링 하고 있다. Dev-Prod의 two-stage 배포 정책을 가지고 있으며, 각 stage에 배포하기 위한 조건은 아래와 같다.

  • Dev Stage
    • POPO 도커 이미지의 latest 버전을 업데이트 한다.
    • 이때, Web 어플리케이션의 경우는 도커 이미지 빌드 때 NEXT_PUBLIC_ENV=dev로 설정해줘야 한다.
    • latest 버전이 업데이트 되면, Github Action을 통해 Auto-deploy 해준다.
  • Prod Stage
    • POPO 도커 이미지의 특정 태그를 업데이트 한다. (ex. v1.2.3)
    • 이때, Web 어플리케이션의 경우는 도커 이미지 빌드 때 NEXT_PUBLIC_ENV=prod로 설정해줘야 한다.
    • Portainer 웹에서 "직접" Prod stage의 버전을 바꿔준다.

환경변수(.env) 설정

Portainer Secrets로 .env를 등록할 때, 서비스의 Secrets 설정에서 Override를 눌러 File name을 /usr/src/app/.env로 반드시 지정해야 한다. 앱이 WORKDIR 기준으로 .env를 찾기 때문에, 경로를 지정하지 않으면 기본 경로에 마운트되어 무시된다.

Portainer Secrets 설정에서 File name을 /usr/src/app/.env로 지정한 화면

  • NODE_ENV는 stage에 맞게 prod / dev로 넣는다. 키 목록은 .env.example 참고.
  • 정상 로드 여부는 기동 로그의 Running in prod mode로 확인한다. undefined mode면 경로가 잘못된 것이다.

Contributors & Maintainer

About

POPO NestJS API

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages