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가 알아서 재배포해준다.