본문 바로가기

Study/GW

[Spring Boot3] 로컬-운영 환경 분리

 

보통 데이터베이스, 포트 등 로컬에서 개발할 때와 실제 서비스 환경에서 사용할 때 설정을 달리 한다. 

 

Spring Boot에서는 application.yml 파일에서 이런 내용을 관리하는데, 분리 설정은 아주 간단하다. 

 

 

 

 

방법은 크게 두 가지가 있는데, 나는 하나의 파일에서 관리하는 2번 방식을 선택했다. 서비스 규모가 크지 않기 때문에 내용이 많지 않아 하나의 파일에서 설정하는게 더 편할 것 같기 때문이다. 

 

1. resources/application-{환경변수}.yml + application.yml (default) 형식으로 환경별로 설정 파일을 생성 

2. resource/application.yml 하나의 파일에서 '---' 구분자로 구분

 

 

 


 

 

 

1. application.yml 파일 수정

spring:
  profiles:
    group:
      local: default,local
      prod: default,prod
  mail:
    host: smtp.gmail.com
    port: 587
    username: {username}
    password: {password}
    properties:
      mail:
        smtp:
          auth: true
          starttls.enable: true
  jwt:
    expiration-hours-access: 2
    expiration-days-refresh: 14
    secret-key: {secret_key}
  server:
    servlet:
      encoding:
        charset: UTF-8
        enabled: true
        force: true

---

spring:
  config:
    activate:
      on-profile: local
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
    defer-datasource-initialization: true
  datasource:
    url: jdbc:h2:mem:testdb
  h2:
    console:
      enabled: true

---

spring:
  config:
    activate:
      on-profile: prod
  jpa:
    properties:
      hibernate:
        format_sql: true
        dialect: org.hibernate.dialect.MySQLDialect
    defer-datasource-initialization: true
  datasource:
    url: jdbc:mariadb://{db_host}:3306/{db_name}
    driver-class-name: org.mariadb.jdbc.Driver
    username: {username}
    password: {password}

 

  • "---" 구분자를 통해 공통 적용 영역, local, prod 을 각각 구분한다. 
  • 가장 윗 칸은 모든 환경에 공통으로 적용하는 부분이다. 
  • 각 환경별로(prod, local) spring.profiles.group.local, prod 를 추가해 공통 설정 부분을 항상 포함시키도록 한다. 

prod, default 프로파일이 모두 적용되어 실행됨

 

 

 

 

2. 실행 커맨드

local 환경에서 실행할 경우, 아래 커맨드를 실행하면 된다. 

java -jar -Dspring.profiles.active=local target/{your-app-name}.jar

 

 

Run/Debug Configuration 설정 추가

그리고 나는 주로 local에서 IntelliJ 에서 실행하기 때문에, Run/Debug Configuration 에 설정을 추가해주어야 한다.

(지금 default로 local 버전을 지정했기에 필수는 아니지만, 로컬에서 다른 환경으로 테스트할 때 참고하기 위해 미리 찾아봤다)

 

 

Active profiles - "local"

 

 

 

 

3. start.sh 파일 수정

기존 파일(start.sh) 에서 -Dspring.profiles.active=prod 을 실행 커맨드 중간에 추가해준다. 

 

 

수정된 파일로 재시작 완료! 

반응형