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 |
댓글