PaaS형태로 수정하기 위해 DB를 Azure의 Azure Database for MySQL로 바꾼다.
application-prod.properties
에 하드코딩 된 MYSQL 정보들을 환경변수로 설정을 하겠습니다. 이렇게 되면 다시 빌드를 하지 않더라도 환경변수만으로 db ip를 자유자재로 바꿀 수 있고 github에 mysql ip와 유저네임 비밀번호가 모두 공개되어 버리는 대참사를 막을 수 있습니다. 설졍할 환경변수는 다음과 같습니다. <aside>
MYSQL_HOST : mysql의 ip나 도메인 정보가 담깁니다.
MYSQL_PORT : mysql의 port정보가 담깁니다.
MYSQL_USER : mysql 접속 유저 이름 정보가 담깁니다.
MYSQL_USER_PASSWORD : $MYSQL_USER의 패스워드 정보가 담깁니다.
</aside>
해당 환경변수를 application-prod.properties
에 반영해보겠습니다.
#DATABASE
spring.datasource.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/sbb?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=${MYSQL_USER}
spring.datasource.password=${MYSQL_USER_PASSWORD}
그리고 빌드 후 재배포 합니다.
mysql -> database -> manage connection -> new
그 후 재배포
우선 build.gradle에 postgresql 라이브러리를 추가합니다
(... 생략 ...)
dependencies {
(... 생략 ...)
runtimeOnly 'org.postgresql:postgresql'
}
(... 생략 ...)
src/main/resource/application-prod_postgresql.properties
파일을 추가합니다.
# DATABASE
spring.datasource.url=jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_POST}/sbb
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=${POSTGRESQL_USER}
spring.datasource.password=${POSTGRESQL_USER_PASSWORD}
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true