Spring Boot에서 .env 파일은 언제 쓰나?
Spring Boot 표준 생태계에서 .env를 잘 사용하지 않는 이유, OS 환경 변수 등 대안 방법 정리
Spring Boot에서 .env 파일은 언제 쓰나?
결론부터
Spring Boot 표준 생태계에서 .env는 잘 안 씁니다. .env는 원래 Node.js(dotenv 패키지) 생태계의 관습이고, Java/Spring은 다른 방식으로 환경 분리를 해결합니다.
Spring Boot가 환경 분리를 해결하는 표준 방법
-
Profile별 properties 분리 (가장 일반적)
application.properties # 공통 설정
application-local.properties # 로컬 개발용 (gitignore)
application-prod.properties # 운영용
./gradlew bootRun --args='--spring.profiles.active=local' -
OS 환경 변수 (운영 서버 / CI/CD)
export DB_PASSWORD=secret
./gradlew bootRun
Docker, Kubernetes, GitHub Actions 등에서 표준적으로 쓰는 방식입니다. -
IDE Run Configuration (로컬 개발)
IntelliJ의 Run Configuration → Environment Variables에 직접 입력. .env와 동일한 역할을 IDE가 담당합니다.
.env가 실제로 많이 쓰이는 환경
┌──────────────────┬──────────────────────────────────────────────────────────┐
│ 환경 │ 이유 │
├──────────────────┼──────────────────────────────────────────────────────────┤
│ Node.js 프로젝트 │ dotenv 패키지가 사실상 표준 │
├──────────────────┼──────────────────────────────────────────────────────────┤
│ Docker Compose │ env_file: .env 옵션으로 컨테이너에 주입 │
├──────────────────┼──────────────────────────────────────────────────────────┤
│ 풀스택 모노레포 │ FE(Next.js)가 .env를 필수로 쓰다 보니 BE도 맞추는 경우 │
├──────────────────┼──────────────────────────────────────────────────────────┤
│ 소규모/스타트업 │ 인프라 없이 빠르게 개발할 때 spring-dotenv 추가해서 사용 │
└──────────────────┴──────────────────────────────────────────────────────────┘
이 프로젝트도 FE가 Next.js라 FE/.env.local은 자연스럽지만, BE는 Spring 표준을 따르는 게 더 맞습니다.
이 프로젝트에 적합한 방식 (A 방식 정리)
BE/
├── application.properties # ${ENV_VAR} 참조 — 커밋 O
├── application-local.properties # 실제 값 입력 — gitignore
└── .env.example # 참조용 템플릿 — 커밋 O
application-local.properties를 만들고 .gitignore에 추가하면 IDE Run Configuration 건드릴 필요 없이 로컬에서 편하게 쓸 수 있습니다. 원하시면 이 구조로 세팅해드릴게요.