Skip to content

Commit b1030e1

Browse files
authored
Merge pull request #382 from solid-connection/fix/vercel-build
docs: update env setup to use Vercel dashboard for preview/production
2 parents e68357e + 9e238e3 commit b1030e1

1 file changed

Lines changed: 67 additions & 20 deletions

File tree

‎.env.guide.md‎

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,109 @@
11
# Environment Variables Setup Guide
22

3-
## Structure
3+
## Architecture Decision
4+
5+
### Why Only .env.development and .env.production?
6+
7+
**문제점**: Next.js는 production 빌드 시 `.env.preview`를 인식하지 않습니다. Vercel Integration의 preview 배포도 `NODE_ENV=production`으로 빌드되기 때문에 `.env.production`을 로드합니다.
8+
9+
**해결 방안**:
10+
1. ❌ `.env.preview` 파일 사용 → Next.js가 인식하지 못함
11+
2. ✅ **Vercel 대시보드에서 환경 변수 관리** (채택)
12+
- Preview 환경: stage API 설정
13+
- Production 환경: production API 설정 (또는 파일 사용)
14+
15+
**장점**:
16+
- 환경별로 명확한 값 관리 가능
17+
- 파일 기반 `.env`는 로컬 개발용으로만 사용
18+
- Vercel의 환경 변수가 파일보다 우선순위가 높아 배포 시 정확히 적용됨
19+
20+
---
21+
22+
## File Structure
423

524
### `.env`
6-
- **용도**: 모든 환경의 공통 설정
25+
- **용도**: 모든 환경의 공통 기본값
726
- **커밋**: ✅ Git에 포함
8-
- **내용**: 공통 값만 (CURRENT_TERM, IMAGE_URL, GOOGLE_MAPS_KEY 등)
27+
- **내용**: 공통 설정 (CURRENT_TERM, IMAGE_URL 등)
928

1029
### `.env.development`
1130
- **용도**: 로컬 개발 환경 (`npm run dev`)
1231
- **커밋**: ✅ Git에 포함
1332
- **내용**: localhost:3000, stage API, 로컬스토리지 로그인
1433

15-
### `.env.preview`
16-
- **용도**: Vercel Preview 배포 (PR)
17-
- **커밋**: ✅ Git에 포함
18-
- **내용**: stage 도메인, stage API, 쿠키 로그인
19-
2034
### `.env.production`
21-
- **용도**: Production 배포
35+
- **용도**: Production 배포 참고용
2236
- **커밋**: ✅ Git에 포함
23-
- **내용**: production 도메인, production API, 쿠키 로그인
37+
- **사용**: release.yml의 `--build-env` 플래그로 값 주입 시 참고
2438

25-
### `.env.local` (권장)
39+
### `.env.local` (옵션)
2640
- **용도**: 개발자별 로컬 설정
2741
- **커밋**: ❌ Git에서 제외 (.gitignore)
28-
- **내용**: 로컬 API 서버, 개인 테스트 키 등
42+
- **사용**: 개인 테스트 키, 로컬 API 서버 등
43+
44+
---
2945

3046
## Deployment Flow
3147

3248
### 1. 로컬 개발 (`npm run dev`)
49+
- `NODE_ENV=development`
3350
- `.env.development` 사용
3451
- localhost:3000, stage API
3552

3653
### 2. PR/Preview (Vercel Integration)
37-
- `.env.preview` 사용
54+
- `NODE_ENV=production` (빌드)
55+
- **Vercel Preview 환경 변수** 사용 ⭐
3856
- stage 도메인, stage API
57+
- ⚠️ `.env.preview`는 Next.js가 인식하지 않으므로 사용 불가
3958

4059
### 3. Main 브랜치 머지 (Vercel Integration)
41-
- `.env.production` 사용
60+
- `NODE_ENV=production` (빌드)
61+
- **Vercel Production 환경 변수** 사용 ⭐
4262
- production 도메인, production API
4363

4464
### 4. 수동 릴리즈 (release.yml)
65+
- `NODE_ENV=production` (빌드)
4566
- `--build-env` 플래그로 production API 명시적 주입
4667
- GitHub Release 태그 생성
4768

69+
---
70+
71+
## Vercel Dashboard Setup
72+
73+
### Preview 환경 변수 설정
74+
```
75+
SENTRY_ENVIRONMENT=preview
76+
NEXT_PUBLIC_WEB_URL=https://www.stage.solid-connection.com
77+
NEXT_PUBLIC_API_SERVER_URL=https://api.stage.solid-connection.com
78+
NEXT_PUBLIC_KAKAO_JS_KEY=c080f1d215a69b47401cda1d7528418a
79+
```
80+
81+
### Production 환경 변수 설정
82+
```
83+
SENTRY_ENVIRONMENT=production
84+
NEXT_PUBLIC_WEB_URL=https://www.solid-connection.com
85+
NEXT_PUBLIC_API_SERVER_URL=https://api.solid-connection.com
86+
NEXT_PUBLIC_KAKAO_JS_KEY=b285223d3e57a6820552018b93805658
87+
```
88+
89+
---
90+
4891
## Best Practices
4992

50-
1. **환경별 파일 분리**
51-
- 각 환경의 설정을 명확히 분리
52-
- 공통 설정은 `.env`에만
93+
1. **환경별 값은 Vercel 대시보드에서 관리**
94+
- Preview/Production 환경에서 다른 API를 사용해야 할 때
95+
- 파일보다 Vercel 환경 변수가 우선순위가 높음
5396

5497
2. **로컬 개발 시 `.env.local` 활용**
5598
```bash
5699
# .env.local (gitignore됨)
57100
NEXT_PUBLIC_API_SERVER_URL=http://localhost:8080
58101
```
59102

60-
3. **환경별 우선순위 이해**
61-
- `.env.[mode].local` > `.env.[mode]` > `.env.local` > `.env`
62-
- Vercel CLI `--build-env`는 모든 파일보다 우선
103+
3. **환경별 우선순위**
104+
- Vercel 환경 변수 > Vercel CLI `--build-env` > `.env.production` > `.env.local` > `.env.development` > `.env`
105+
106+
4. **`.env.preview`를 사용하지 않는 이유**
107+
- Next.js는 production 빌드 시 `.env.preview`를 로드하지 않음
108+
- Vercel의 preview 배포도 `NODE_ENV=production`으로 빌드됨
109+
- 대신 Vercel 대시보드의 Preview 환경 변수 사용

0 commit comments

Comments
 (0)