Next.js GCP App Engine 배포 시 환경변수 분기
1061
1 asked
Next.js로 Google Cloud Platform에 App Engine 서비스 배포를 진행하고 있습니다.
문제는 production ( 실 서비스 )와 development ( 개발용 )으로 나누어서
.env.development, .env.production의 두개의 환경변수를 가지고있습니다.
배포 시 실서비스 에서는 .env.production을 사용하도록
개발용 에서는 .env.development를 사용하도록 설정하려는데 이것저것 만져보아도 production만 사용하는 문제가 발생해버리네요.
현재 프로젝트구조와 설정코드는 이렇습니다.
project
├── local
└── Dockerfile
└── docker-compose.yml
├── resource
└── .next
└── ... (Next.js 빌드 파일)
└── node_modules
└── package.json
└── dev_app.yaml
└── prd_app.yaml
└── .env.development
└── .env.production
└── next.config.js
└── ... (기타 Next.js 프로젝트 파일)
여기서 package.json의 script설정은 다음과 같습니다.
{
dev: "next dev",
start: "next start",
lint: "next lint",
deploy: "npm run build && gcloud app deploy --project='production' -q --appyaml=prd_app.yaml",
deploy:dev: "npm run build:dev && gcloud app deploy --project='development' -q --appyaml=dev_app.yaml",
build: "dotenv -e .env.production next build",
build:dev: "dotenv -e .env.development next build"
}
next.config.js는 특별히 건드리지 않았습니다.
dev_app.yaml, prd_app.yaml파일은 서비스명만 각각 설정해 주었습니다.
runtime: nodejs20 # or another supported version
service: development
질문 1.
현재 app engine 업로드된 용량, 로직을 보니 빌드파일이 아닌 프로젝트 그대로 들어가는 것 같습니다.
빌드는 환경변수파일도 정상적으로 분기되는데 앱엔진에서 해당문제가 발생하는 것으로보아
혹시 Next.js에서 빌드된 파일로 app engine에 배포할 수 있는지 궁금합니다.
질문 2.
빌드파일만 올릴수 없다 라고 하더라도 프로젝트 그대로 올리면서 환경변수를 분기할 방법이 있는지 궁금합니다.
정말 문서건 블로그건 구글서칭, 깃허브검색, GPT 모두 끈질기게 시도해봤지만
능력부족 탓인지 성공하지 못했습니다..
능력자분들께서 도움주시면 잊지않겠습니다!!
Answer 2
0
저도 같은 문제로 해맸는데요
@next/env 디펜던시 를 추가 후 설정했더니 작동되었습니다.
https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables
0
안녕하세요, 인프런 AI 인턴이에요. Next.js로 Google Cloud Platform에 App Engine 서비스 배포하실 때, 환경변수를 분기해서 사용하고자 하는 것 같네요. 현재 프로젝트 구조와 설정 코드를 보니, 설정이 잘못된 부분이 있는 것 같아 보입니다.
우선, package.json의 script 설정을 살펴보겠습니다.
"deploy": "npm run build && gcloud app deploy --project='production' -q --appyaml=prd_app.yaml",
"deploy:dev": "npm run build:dev && gcloud app deploy --project='development' -q --appyaml=dev_app.yaml",
"build": "dotenv -e .env.production next build"
여기서 문제가 있는 부분은 deploy:dev 스크립트입니다. 현재 설정 상태에서는 deploy:dev 스크립트가 deploy 스크립트와 같은 명령어를 수행하고 있습니다. 따라서 production만 사용하는 문제가 발생한 것 같습니다.
.env.development 파일을 사용하려면 deploy:dev 스크립트에서 build 스크립트 대신 build:dev 스크립트를 실행하도록 수정해야 합니다. 그리고 --project 옵션에도 'development'을 사용하도록 수정할 필요가 있습니다.
수정된 deploy:dev 스크립트는 다음과 같이 되어야 합니다.
"deploy:dev": "npm run build:dev && gcloud app deploy --project='development' -q --appyaml=dev_app.yaml"
위의 수정사항을 반영하고 배포를 다시 시도해 보세요. 그리고 환경변수를 올바르게 사용하고 있는지 확인해 보세요. 문제가 계속되면 Next.js의 환경변수 설정에 문제가 있을 수 있으니 해당 부분도 확인해 보시기 바랍니다.
추가로, .env.development와 .env.production 파일이 정확히 프로젝트 루트 디렉토리에 위치해 있는지 확인해 주세요.
문제가 계속되면 추가 질문 남겨주시면 도움을 드리겠습니다. 좋은 결과 있으시길 바래요!
0
아쉽게도 이미 해당 스크립트가 적용되어 있는 상태입니다.
{
deploy:dev: "npm run build:dev && gcloud app deploy --project='development' -q --appyaml=dev_app.yaml"
}
output sytles 모든 프로젝트 적용시 디렉토리가 헷갈립니다 ㅠㅠ
0
6
1
터미널 줄바꿈 세팅
0
6
1
Cursor 설정
0
9
1
setting.json과 setting.local.json
0
10
1
카드 뉴스 만들기..
0
14
0
기존 mcp를 플러그인으로 대체
0
14
1
바이브코딩을 하는 개발자(작업복잡도 판단의 어려움)
0
15
1
커서에서 클로드 코드 실행했는데 쉬프트 +엔터가 안먹히는데요.
0
11
1
claw code 에 대해서는 어떻게 생각하시나요?!
0
17
1
비개발자용 리서치나 논문검색 프로젝트 요청
0
14
1
프론트엔드 학습 수준 문의
0
17
2
Node 관련 질문입니다
0
12
2
커밋 명령에 대한 플랜모드 미적용
0
21
2
prd.md 관련
0
20
3
하네스 강의 관련
0
31
2
강의 내용속 커서 버젼하고 현재 커서 버젼이 다른가요?
0
15
2
갑자기 크루드가 실행이 안됩니다.
0
28
2
크루드가 실행이 안되요..
0
29
2
줄바꿈 셋팅에 관해서
0
32
2
커서설치후 터미널에서 claude 입력했는데 인식되지않아요
0
27
1
110강 까지 진행했습니다.
0
37
2
useMutation 적용 후 새로운 글 등록시 content가 안보여요
0
21
2
서브에이전트 병렬 실행 질문
0
35
2
브랜티 머지 관련
0
27
2

