😄이 글은 Oracle + 우분투로 서버를 구축한 상태에서 시작합니다.
최근 프로젝트를 Vercel에 배포하게 되면 로컬 로그인, 로컬 회원가입이 504 Gateway Timeout 오류를 반환하였습니다.
문제의 원인은 Vercel의 무료 플랜과 관련된 자원 제한이 주요 원인 중 하나로 추정되었습니다. 실제로 Vercel Pro 플랜으로 업그레이드 한 후, 문제가 해결되었습니다.
Vercel: Serverless functions have a timeout of only 10 seconds (300 seconds if you upgrade to pro plan)
위의 글에서 볼수 있듯이 Vercel의 무료 플랜에서는 서버리스 함수의 실행 시간이 10초로 제한됩니다.
그래서 제 해결책은 자체 서버를 구축하여 데이터베이스 요청의 처리 속도와 효율성을 향상시키는 것입니다.
Docker 설치를 위한 패키지 업데이트
sudo apt-get update
필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
Docker의 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker 저장소를 APT 소스에 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Docker 패키지 업데이트 및 설치
sudo apt-get update
sudo apt-get install docker-ce
Docker가 정상적으로 설치되었는지 확인
sudo docker run hello-world
Docker 이미지 빌드
mkdir project
cd project
git clone ‘url’
sudo docker build -t nextjs-app .
Docker 컨테이너 실행
sudo docker run -d -p 3000:3000 nextjs-app
sudo docker run -d -p 80:3000 nextjs-app
sudo docker ps
sudo docker stop 컨테이너
sudo docker rm 컨테이너
Oracle Cloud Infrastructure의 VCN 설정
포트 80을 외부 접속 개방하기
Security List
sudo docker run -d -p 80:3000 nextjs-app
이제 브라우저에 IP주소로 접속시 프로젝트를 잘 확인할 수 있습니다.
가비아에서 도메인을 삽니다. (이벤트 하는 이름으로 사면 좀더 싸요.)
DNS 관리 ⇒ DNS 설정 ⇒ 도메인을 연결 ⇒ 레코드 추가
| A | @ | 당신의 ip 주소 |
|---|---|---|
| CNAME | www | ott-we-t.com. |
다음은 Git Actions를 활용해서 자동배포
https://velog.io/@hongkyu_mr_chu/Docker-Git-Actions