배포환경설정-local과 server분리하기

Albatross53·2023년 6월 25일
0

배포

목록 보기
1/1
post-custom-banner

1. 현재 상황

인텔리제이서 개발중이나 로컬에서 서버를 배포할때는 mysql을 사용하지만 aws에서 배포할때는 rds사용 예정 -> 서버 설정 분리가 필요

2. 서버 설정 분리 방법

application.yml을 사용한 분리 구상
application.yml -> 일반적으로 사용하는 애플리케이션 실행 환경
application-local.yml -> 로컬 환경에서 사용하는 정보들
application-server.yml -> server 환경에서 사용되는 정보들

application.yml - jpa, sql, logging, server등 설정

spring:
  jpa:
    hibernate:
      ddl-auto: create-drop
    show-sql: true
    properties:
      hibernate:
        format_sql: true
  sql:
    init:
      data-locations: classpath*:db/h2/data.sql
logging:
  level:
    org:
      springframework:
        orm:
          jpa: DEBUG
server:
  servlet:
    encoding:
      force-response: true

# 공통 설정 내용...

application-local.yml - 로컬에서 사용할 mysql설정

spring:
  profiles:
    active: local

# MySQL 데이터베이스 설정
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/{데이터베이스 이름}?useSSL=false&allowPublicKeyRetrieval=true&useLegacyAuth=false
    username: {데이터베이스 유저 이름}
    password: {데이터베이스 비밀번호}
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    {현재mysql8.0.32버전이기 때문에 MySQL8Dialect시용 mysql 버전에 맞게 변경하기}

# 로컬 전용 설정 내용...

application-server.yml - 서버에서 사용할 aws rds설정

spring:
  profiles:
    active: server

# AWS RDS를 사용하는 MySQL 데이터베이스 설정
spring:
  datasource:
    url: jdbc:mysql://{AWS RDS Endpoint}/{데이터베이스 이름}?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
    username: {RDS Mysql Admin id}
    password: {RDS Mysql Admin password}
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect

# 서버 전용 설정 내용...

이 세가지 파일로 서버 설정을 분리한다.
이후 아래 3번의 세가지 방법 중 상황에 알맞게 spring.profiles를 설정한다.

3-1. 인텔리제이에서 spring.profiles 설정하기

인텔리제이에서 spring.profiles설정하는 방법

1. Run/Debug configuration 클릭

2. Modify options -> Add VM options 클릭

3. Active Profile 옵션 추가

-Dspring.profiles.active={프로파일}

3-2. application.yml 설정

위 application.yml에 spring.profiles.active 설정을 추가한다.

spring:
  profiles:
    active: local
# 공통 설정 내용...

3-3. ./gradlew build 명령을 사용하여 spring.profiles.active를 설정하는 방법

Windows: ./gradlew build -Dspring.profiles.active={프로파일}
macOS/Linux: ./gradlew build -Dspring.profiles.active={프로파일}

4. 완료!

이후 실행하면 local설정으로 mysql과 연동된다

참고 글
https://velog.io/@be_have98/IntelliJ-Spring-Boot%EC%9D%98-Active-Profile-%EC%84%A4%EC%A0%95

profile
개발공부중
post-custom-banner

0개의 댓글