본문 바로가기
일,/Docker, Kubernetes

Next.js 환경에서 workflows, .dockerfile을 이용해 docker build 시 Env 적용하기(NEXT_PUBLIC)

by 무벅 2022. 4. 28.

Next.js는 외부에서 환경변수를 주입할 때 NEXT_PUBLIC_으로 시작하는 변수명을 사용할 수 있다. (공식문서 참조)

작업중인 애플리케이션에 NEXT_PUBLIC_를 이용해 개발모드를 셋팅하고 있다. 

next dev 또는 next build 시에 NEXT_PUBLIC_ENV_MODE를 development, stage, main으로 설정하고 있고 CI/CD는 github workflows를 이용해 docker 이미지를 rancher에 올리는 방식이다.

 

docker build --build-arg NEXT_PUBLIC_ENV_MODE="stage" -t ${IMAGE} -t ${IMAGE_LATEST} -f .dockerfile .

 

action yml 에서는 위의 코드로 docker 이미지를 생성하는데 보면 --build-arg 속성을 이용해서 NEXT_PUBLIC_ENV_MODE를 .dockerfile에 전달한다.

 

RUN yarn install
ARG NEXT_PUBLIC_ENV_MODE
RUN NEXT_PUBLIC_ENV_MODE=$NEXT_PUBLIC_ENV_MODE yarn build

 

그러면 .dockerfile 에서 위와 같이 전달된 값을 사용해 build에 적용할 수 있다.

$NEXT_PUBLIC_ENV_MODE를 사용하기 전에, ARG NEXT_PUBLIC_ENV_MODE를 선언해 주어야 한다.

 

참고

https://nextjs.org/docs/basic-features/environment-variables#exposing-environment-variables-to-the-browser

 

 

 

반응형

댓글