들어가며
Spring Boot, CLI 애플리케이션 등 Java 애플리케이션을 java -jar 명령으로 실행할 때, 환경별 설정을 유연하게 바꾸기 위한 방법으로 "환경 변수" 설정이 매우 중요합니다.
운영/개발 환경 분리, 포트 변경, 외부 DB 접근, 로깅 설정 등도 대부분 환경 변수나 프로파일로 제어합니다.
이 글에서는 java -jar 실행 시 사용할 수 있는 환경 변수 설정 방법을 운영체제별, 상황별로 정리하고, Spring Boot에서 어떻게 활용되는지까지 설명합니다.
1. 기본 실행 구조 요약
java [JVM 옵션] -jar [애플리케이션.jar] [애플리케이션 인자]
환경 변수는 JVM 옵션, 애플리케이션 인자에 직접 넣을 수도 있고, 시스템 환경에 등록할 수도 있습니다.
2. OS별 환경 변수 설정 방법
✅ 리눅스/macOS: export
export SPRING_PROFILES_ACTIVE=dev
export DB_HOST=localhost
java -jar myapp.jar
또는 한 줄로 실행:
SPRING_PROFILES_ACTIVE=dev DB_HOST=localhost java -jar myapp.jar
✅ 윈도우 (CMD)
set SPRING_PROFILES_ACTIVE=dev
set DB_HOST=localhost
java -jar myapp.jar
✅ 윈도우 (PowerShell)
$env:SPRING_PROFILES_ACTIVE="dev"
java -jar myapp.jar
3. Spring Boot에서 환경 변수 활용
✅ 1) 프로파일 설정
SPRING_PROFILES_ACTIVE=prod java -jar myapp.jar
→ application-prod.yml 이 적용됨
✅ 2) 외부 환경 변수로 application.yml 속성 대체
# application.yml 예시
spring:
datasource:
url: ${DB_URL}
username: ${DB_USER}
password: ${DB_PASS}
export DB_URL=jdbc:mysql://localhost:3306/test
export DB_USER=root
export DB_PASS=pass123
→ 실행 시 위 환경 변수로 자동 바인딩됨
✅ 3) 커맨드라인 --key=value 방식
java -jar myapp.jar --server.port=9090 --spring.profiles.active=dev
→ 환경 변수 없이 인자만으로도 설정 주입 가능
4. .env 파일 활용 (Docker/DevOps 환경)
.env 예시
SPRING_PROFILES_ACTIVE=dev
DB_URL=jdbc:mysql://localhost:3306/test
.env는 docker-compose, CI/CD 툴 등에서 자주 사용되며,
source .env 로 로딩하거나 쉘에서 자동 인식 가능
source .env
java -jar myapp.jar
5. 실전 실행 스크립트 예시
#!/bin/bash
# run.sh
export SPRING_PROFILES_ACTIVE=stage
export LOG_LEVEL=debug
JAVA_OPTS="-Xms512m -Xmx512m"
java $JAVA_OPTS -jar myapp.jar
→ chmod +x run.sh 후 실행
마치며
운영 환경과 개발 환경에서 동일 jar를 사용하면서도 유연하게 설정을 분기하려면, 환경 변수와 Spring Profile의 조합이 매우 효과적입니다.
또한 쉘 스크립트, CI/CD 설정에서도 환경 변수를 적극 활용하면 보안성, 확장성, 유지보수성 모두 향상됩니다.
📂 platform/java 또는 springboot 카테고리에서 이어서:
- Spring Boot 외부 설정 주입 전략 (환경변수 vs 파일 vs 시스템 프로퍼티)
- Spring Config Server로 환경 변수 중앙화
- @Value, @ConfigurationProperties 실전 예제
등을 이어서 다룹니다.
📌 이전 글 다시보기
📌 다음 글 미리보기
👉 Java 애플리케이션 로그 분석 흐름
📚 Java_runtime 시리즈 전체 보기
👉 https://jobreview.tistory.com/category/platform_infra_cloud/java_runtime
'platform_infra_cloud > java_runtime' 카테고리의 다른 글
Docker 환경에서의 JVM 동작 이해하기 (0) | 2025.04.19 |
---|---|
Java 애플리케이션 로그 분석 흐름 가이드 (0) | 2025.04.19 |
Spring Boot에서 JVM 설정 최적화 가이드 (0) | 2025.04.19 |
GC의 종류와 튜닝 전략 (G1GC, ZGC, ParallelGC) (0) | 2025.04.19 |
JVM 메모리 구조 상세 분석 – Heap, Stack, Metaspace의 동작 원리 (0) | 2025.04.19 |
댓글