[소소한 개발 일지] serverless-nextjs를 통해 개발, 상용 스테이지로 나눠서 배포하기

Explanation

2021-12-12
오랜만에 보니… 뭔가 굉장히… 민망한 글이었네요..
serverless-nextjs 프로젝트를 조금 더 나은 방법으로 스테이지로 나누는 글을 새로 작성해서,
아래의 링크를 통해 참고해보시면 더 좋을 것 같습니다!
 
https://falsy.me/serverless-nextjs-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ec%8a%a4%ed%85%8c%ec%9d%b4%ec%a7%80-%eb%b3%84%eb%a1%9c-%eb%82%98%eb%88%84%ec%96%b4-%ec%84%a4%ec%a0%95-%eb%b0%b0%ed%8f%ac%ed%95%98%ea%b8%b0/

어느새 2021년이 와버렸습니다..
코로나가 장기화되고 있는데 모두 건강 잘 챙기시고.. 새해 복 많이 받으세요!

오늘은 짧고 간단하게, serverless-nextjs을 통해 development, production과 같이 스테이지를 나누어서 배포하는 방법에 대해 적어 보려고 합니다.
(샅샅이 찾아보진 않았지만 serverless-nextjs에서는 아직 스테이지 관리에 대해 처리가 안되어 있는 거 같아요.)

1. 문제의 상황

간단하게 아래처럼,

위와 같이 작성하고 ‘$ npx serverless’ 커맨드를 입력하면 dev 스테이지로 배포가 되겠죠?? 그러고 나서!

만약에 이렇게 env 파일을 수정하고 다시 ‘$ npx serverless’ 커맨드를 입력하면!
dev 환경의 배포는 유지되고 prod 환경으로 새롭게 배포가 되길 기대했지만!
dev 환경이 삭제되고 prod 환경이 새로 배포가 된답니다.

2. 해결

사실 해결했다기 보단…. 임시 방편입니다.

.env 환경변수를 수정하고 다시 배포했을때 이전 배포가 사라지는 건 이전에 배포할때 .serverless 디렉토리와 .serverless_nextjs 디렉토리가 있어서 그렇거든요?
그래서 dev로 배포를 하고 prod를 배포할때는 .serverless, .serverless_nextjs 디렉토리를 삭제해주고 다시 배포해주면 정상적으로 두 개의 스테이지로 배포가 된답니다.

그래서 간단하게 package.json에 script로 추가하면 조금.. 더 편하게 사용할 수 있겠죠?

이렇게 해주면,
처음에 .serverless, .serverless_nextjs 디렉토리가 없을때는 ‘npx serverless’로 배포하고 그 다음부터는 env 파일을 수정하고 ‘npm run deploy’ 커맨드로 다시 배포할 수 있답니다.