Springboot heroku에 배포하기-2 (mysql 포함)

2023. 2. 27. 16:42배포

https://brilliantdevelop.tistory.com/155에 이어서 이제는 DB를 포함해서 배포하려 합니다. 

DB없이 heroku배포에 성공했다면 DB포함하는 건 별로 어렵지 않습니다.

 

ClearDBMySQL은 문제가 많다고 합니다. ClearDB로 성공하신분도 많겠지만 전 실패했습니다.

여기서는 JawsDBMySQL로 진행합니다.

※로컬에서 mysql, JPA 설정은 따로 설명하지 않습니다.

heroku App에 DB 추가하기

먼저 Resources 탭에 가서 Find more add ons를 클릭합니다.

 

이후 JawsDBMysSQL을 선택한 후  Install 해줍니다 

App to provision to에는 App 이름을 입력한 후 선택해주면 됩니다. 

그리고  submit order form을 누르면 내 App에 JawsDBMySQL이 추가됩니다

 

추가된 모습.

 

 

App의 JawsDB에 연결하기

settings탭에 가면 Config Vars가 있다. 여기서 Reveal Config Vars를 눌러 설정 변수들을 보자

 

위에서 설치한 JawsDBMySQL에 관한 설정값들이 들어있다.

(나는 당연히 글 작성 후 JawsDB 삭제 후 재설치했다. )

url 값에 대한 각각의 의미는 다음과 같다.

mysql://vq4k4caz3imnqt2z:wfzdf6f1gv6e6s28@ohunm00fjsjs1uzy.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/or29dhek2am319w5

mysql://username:userpassword@hostname:port/databasename

workbench툴에서 접속을 확인해 볼 수 있다.

 

 

연결이 확인되었다면 springboot 프로젝트에서 application.yml에 다음과 같이 DB 설정을 해주자.

url앞에 꼭 jdbc: 을 붙여주자.  

  spring : 
    datasource:
     url: jdbc:mysql://kftwb66aj121oo2l:eddl02imtk43ewxl@dt3bgg3gu6nqye5f.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/zhhn40xttqigi3pe
     username: kftwb66aj121oo2l
     password: eddl02imtk43ewxl
     driver-class-name: com.mysql.cj.jdbc.Driver

기본 홈 화면에 DB 동작을 확인하기 위해

아래와 같이 DB에 데이터를 넣고, "/" 에서는 member를 model에 담았다.

이제 localhost:8080에서 되는지 확인 한 다음  깃 허브에 commit/push 한다. 

 

 

이제 Deploy탭에서 Deploy Branch 하고 View버튼을 누르면 된다.

 

DB까지 잘 동작하는 것을 확인할 수 있다. 

 

 

 

JawsDBmySQL 설정 비공개하기

위의 과정을 잘 따라와서 배포까지 성공했지만,

내 깃허브에는  JawsDB에 관한 중요 설정들이 그대로 노출된다.(application.yml)

url, username, password는 남들에게 알려주면 안 되는 사항으로 깃허브에 공개하면 안된다.

따라서 url, username, password에 관하여 변수 설정을 해줘야한다.

 

먼저 application.yml에 url, username, password값들을 다음과 같이 변경하자.

spring:
  datasource:
    url: ${DATASOURCE_URL}
    username: ${DATASOURCE_USERNAME}
    password: ${DATASOURCE_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

변경하였으면 commit/push.

 

 

그리고 settings 탭에서  Config Vars에 가서 위 변수들을 추가해주자.

다시 delploy탭에서 배포하면 된다.

 

 

 

※변경사항을 바로 확인하려고 직접 deploy 탭에서 배포하라고 했지만, 이전 글에서 자동배포설정을 해줬기때문에

깃허브에 commit/push만 해주면 나중에 heroku가 알아서 재배포해준다.