본문 바로가기
platform_infra_cloud/java_runtime

java -jar 실행 시 환경 변수 구성법 가이드

by 죄니안죄니 2025. 4. 19.

들어가며

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 실전 예제

등을 이어서 다룹니다.

 

 

 


📌
 이전 글 다시보기

👉 SpringBoot에서 JVM 설정 최적화

📌 다음 글 미리보기
👉 Java 애플리케이션 로그 분석 흐름

📚 Java_runtime 시리즈 전체 보기
👉 https://jobreview.tistory.com/category/platform_infra_cloud/java_runtime

댓글