본문 바로가기
WEB/SPRING

Springboot properties 파일 분리 (local, prod, ...)

by snow_white 2023. 3. 17.

1️⃣ application.properties 파일을 로컬 환경, 운영 환경을 구분하여 적용시키기

 

1. properties 파일 분리

기존 application.properties 파일을 운영 및 개발로 분리하여 파일을 생성한다.

application-{name}.properties

로컬환경은 local, 개발환경은 dev, 운영환경은 prod로 파일을 생성한다.

(현재는 로컬(local), 운영(prod)환경 파일만 생성한 상태입니다.)

 

2. 애플리케이션 실행

1) Edit Configurations 설정
스프링 부트 실행 환경에서 Active profiles을 properties에 맞게 설정한다.

2) Environment Variables 추가

위의 추가시킨 environment variables 에서 ACTIVE에 해당하는 환경변수를 할당한다.

Name Value  
ACTIVE local application-local.properties 를 가리킴
ACTIVE prod application-prod.properties 를 가리킴
# application.properties 설정
spring.profiles.active=${ACTIVE}

application.properties

spring.profiles.active=${ACTIVE}
server.port=8080
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

# SQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

# hibernate
spring.jpa.database=mysql
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.generate-ddl=false
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

application-local.properties

spring.datasource.url=jdbc:mysql://localhost:3306/local_db?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=${LOCAL_DB_NAME}
spring.datasource.password=${LOCAL_DB_PASSWORD}

application-prod.properties

spring.datasource.url=jdbc:mysql://서버주소:3306/prod_db?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=${DB_NAME}
spring.datasource.password=${DB_PASSWORD}

✅ ACTIVE의 Value가 local일 경우

✅ ACTIVE의 Value가 prod일 경우

 

2️⃣ jenkins에서 운영 (application-prod.properties) 파일만 사용하게끔 설정하기

jenkins 접속 후

Dashboard > Jenkins 관리 > Syetem > Global Properties

 

spring 컨테이너 실행시 환경변수 할당

jenkins pipeline script

... 생략
 stage('Deploy') {
        steps{
        	  ... 생략
              sh 'docker run -d --name back -p 8080:8080 \
              -e "ACTIVE=${ACTIVE}" \ # Global properties에 설정한 환경변수 'prod' 적용
              -e "DB_NAME=${DB_NAME}" \
              -e "DB_PASSWORD=${DB_PASSWORD}" \
              healing/back'
        }
}

 

'WEB > SPRING' 카테고리의 다른 글

스프링 배치  (0) 2023.05.14
배치 서비스  (0) 2023.05.10
Springboot에서 java-email 활용하기  (0) 2022.11.21
[Spring] AOP 프로그래밍  (0) 2022.06.03
[Spring] 빈(Bean) 🟢  (0) 2022.06.03

댓글