HomeBlogGuestbookLab 

JDM's Blog

온갖 테스트 결과가 기록되는 이곳은 JDM's Blog입니다. :3

SpringBoot Profile

이번 포스팅은 Springboot Profile 설정에 대한 토막글입니다. 간단하게 요점만 짚고 넘어갑시다!

Create Springboot Project

테스트로 사용할 Springboot 프로젝트를 생성합니다. 그러면 익스플로러에서 src/main/resource 부분에 application.properties 라는 파일이 있다는건 다들 아시는 내용일거라 생각합니다. :D

그리고 이 파일처럼 새로운 파일을 구성하면 하나의 "Profile"이 탄생합니다. 해당 파일에 넣을 수 있는 옵션에 대한 것은 Common application properties 링크를 참조하세요.

Add propetries file

프로필을 만드려면 프로필 파일만 만들면 됩니다. application.properties 파일이 있는 위치에서 application-{profile name}.properties처럼 파일을 생성해주면 됩니다. 예를 들어 내부 개발 환경인 local과 테스트 환경인 test 그리고 실제 배포환경인 production이 필요하다고 하면 다음처럼 작성하면 됩니다.

local

# file name : application-local.properties
server.port = 10000

test

# file name : application-test.properties
server.port = 10001

production

# file name : application-production.properties
server.port = 10002

common properties

또한 application.properties 파일 자체는 해당 프로필 파일들이 공통적으로 가지는 default 세팅을 해주면 됩니다. 이말이 뜻하는것은 별도의 프로필 파일에서 default값을 오버라이딩 할 수 있다는 것입니다.

# file name : application.properties
spring.profiles.active=local
server.port=9999

위처럼 파일을 작성한다면 기본적으로 어플리케이션 구동시 local 환경으로 배포합니다. 그리고 9999번 포트가 아닌 local 프로필 설정에 있는 10000번 포트로 실행합니다. (주의!)

만약, spring.profiles.active 속성값을 지운다면 어플리케이션을 9999번 포트에서 실행할겁니다. :3

External Environment

내부 개발환경으로 개발이 완료됐다면 실제 배포환경으로 실행할 준비를 해야합니다. 이때 방법은 몇가지가 있습니다.

Using Tomcat

만약 Springboot 프로젝트 패키징을 war로 선택했다면 톰캣에서 구동하는 방법을 떠올릴 수 있습니다. 톰캣으로 구동할 때엔 setenv.sh에서 프로필 설정을 해주면 됩니다.

# file path : {tomcat-root-path}/bin/setenv.sh
# 해당 파일이 존재하지 않으면 생성한 뒤에 아래의 코드를 삽입합니다.
export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=production"

앞으로 해당 톰캣이 구동할 때엔 production 프로필 설정으로 구동하게 됩니다.

TIP. Profile Override

만약 application.properties에서 실행할 프로필을 직접 지정했다 하더라도(ex. spring.profiles.active=local) 외부 환경에서의 VM 옵션이 별도 설정 되어 있다면 그것을 따르도록 되어 있습니다.

Using Shell Script

만약 Springboot 프로젝트를 jar로 패키징한다면 쉘스크립트로 직접 구동할 수도 있겠습니다. 다음처럼 사용합니다.

java -jar -Dspring.profiles.active=production {execute-project-jar-name}.jar >> {log-file-name}.log 2>&1 &

해당 쉘스크립트 실행시 어플리케이션은 production 환경으로 배포하고 실행됩니다.

Closing Remarks

번개로 콩 구워먹듯이 Springboot 프로필 설정에 대해 알아봤습니다. 잘못된 점 있다면 댓글 꼬옥 부탁드립니다. :3