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

2023. 2. 27. 16:34배포

시작 전 참고사항

  • heroku 회원가입 및 카드등록(visa카드) 해놓기
  • 유료에요. 한달에 7달라
  • 개발환경(DB는 mysq로 할 예정) 

 localhost:8080에서 보이는 home.html 화면을 prac.herokuapp.com 에서도 똑같이 보는 것 까지가 이 글의 목표이다.

(localhost:8080에서도  home.html 화면이 안 보이면 이 글은 나중에....)

 mysql 연동하는 건 다음글에서...

  • 프로젝트와 깃허브 연동 해놓기

 

 

 

heroku에서 배포를 하는 방법은 3가지가 있다

이중 우리는 깃허브를 이용한 배포를 할 것이다.

(깃과 깃허브 방식은 똑같다고 할 수 있다.  단지 heroku 깃명령어를 통해서하냐, 

아니면 heroku사이트에서 제공하는 여러 버튼을 이용해서 하냐의 차이일 뿐   )

 

 

 

 

 

앱 만들기 

heroku를 로그인하자.  그 후 new- create new app을 누른다.

 

app name을 입력하고 Createapp을 누르자.   (기왕이면 깃허브 프로젝트와 똑같은 이름으로..)

 

 

이렇게 app이 만들어진다. 

이제 app에 들어가서 settings 탭을 들어가자.

 

 

조금만 스크롤을 내리면 build packs가 있다. 

우리는 springboot gradle로 프로젝트를 만들었으니까  gradle을 추가해주자. 

 

 

 

heroku 깃허브 연동하기

app에 들어가서 Deploy 탭을 선택하자. 

그 후 GitHub를 선택하고  github의 프로젝트 중 원하는 프로젝트를 선택한다.

(내가 연동한 내 프로젝트 https://github.com/gks930620/prac )

 

그 후 Search버튼을 누르고 connect버튼을 누른다 

 

 

 

다음으로로는 자동배포 설정과 직접 배포하는  화면이 나온다.

자동배포는 깃허브에 변동사항이 있으면 heroku가 알아서 빌드한 후 재배포하겠다는 설정이다. 

Wait For CI 어쩌구는 체크하지말고  Enable Automatic Deploys를 누르자.

마지막으로 Deploy Branch를  눌러 현재 깃허브의 프로젝트를 빌드한 후 배포해보자.

 

 

배포에 관한 로그가 나오고 배포가 완료된 후에는 View버튼이 보일 것이다.

View버튼을 누르면 appname.herokuapp.com 으로 가고 springboot의 홈화면이 보여야 하지만 에러가 난다.

 

 

heroku에서 프로젝트 jar파일관련 heroku설정하기

springboot를 만들 때 packging을 jar파일로 했다. 프로젝트안에 내장서버를 갖고 있다는 뜻이다. 

프로젝트를 빌드해 jar파일을 만들고 이 jar파일을 heroku가 실행하게 하면 되는데  

jar파일위치,이름 등을 설정해서 github에 올리면 된다. 

 

먼저 builde.gradle 하단에 다음과 같은 내용을 추가하자. 

bootJar{
   destinationDirectory = file("./target") //gradle build 시 jar 파일이 생성되는 파일명 및 위치를 설정한다.
   archivesBaseName = 'prac'   //프로젝트이름
   archiveFileName = 'prac.jar' //jar파일명 
   archiveVersion = "0.0.1"
}

 

그 다음 루트디렉토리에 Procfile(확장자 없음) 파일을 만들고 다음과 같이 적자.

web: java -Dserver.port=$PORT -Dspring.profiles.active=production $JAVA_OPTS -jar "target/prac.jar"

 

추가한 후 깃허브에 commit/push를 하고 Deploy Branch 하고 View버튼을 누르면 된다.

 

prac.herokuapp.com에서 프로젝트 홈 화면이 나올 것이다. 

(이제 view버튼 없이 어디서든  prac.herokuapp.com에 접속하면 된다)

 

 

※ 기본적으로 heroku 는 Java 8로 제공한다.

Java8로 프로젝트가 되어있다면, 해당 내용은 진행하지 않아도 되지만  11로 되어있다면 추가가 필요하다.

위와 같이 루트디렉토리에 system.properties 파일을 추가하고 다음의 내용을 적는다.

java.runtime.version=11

역시 깃허브에 commit/push 해주도록 하자.

 

 

참고로 Resource탭에 가보면 다음과 같이 변경되어있는 걸 알 수 있는데  

https://devcenter.heroku.com/articles/procfile 를 참고하시면  됩니다. Springboot부분만 보세요.

기본요금제인 basic Dynos으로 시작하는데 이게 7달라입니다.   

 

 

 

다음 글에서는 같은 프로젝트에 mysql을 추가해서  배포하는 법을 알아보도록 하겠습니다.