본문 바로가기
프로그램이야기/토이프로젝트

heroku를 통한 spring boot rest api 프로젝트 배포해보기 ( github action을 이용한 자동 배포 )

by Doinge 2021. 7. 23.
728x90
반응형

토이프로젝트 목표는 front 소스는 react, back 소스는 spring boot 로 작성해보는 것이다.

본격적인 개발 전에 빌드하고 배포하는 것 먼저 테스트 해보려고 한다.

 

react 프로젝트 배포는 https://doinge-coding.tistory.com/77

 

netlify에서 react소스 배포해보기 + 커스텀 도메인 연결

가비아에서 세일하는 도메인을 1년에 550원에 샀다 유후~~ 새로 산 도메인에 react 프로젝트를 배포해보려고 한다. 이것저것 알아보는 중에 지인으로부터 좋은 곳을 추천받았다. 바로 netlify였다.

doinge-coding.tistory.com

위 포스팅을 참고하길 바란다.

 

이번 포스팅에서는 spring boot로 만든 rest api 서버를 heroku라는 무료서버에 배포해보도록 하겠다.

 

목차

1. spring boot 프로젝트 생성

2. heroku 회원가입

3. heroku 배포

4. heroku 꿀팁


1. spring boot 프로젝트 생성

 

테스트 목적이므로 간단한 api 한벌만 만들어서 진행했다. 소스는 아래 깃허브 주소를 참고 바란다.

https://github.com/wmf34a/lulugram-back

 

GitHub - wmf34a/lulugram-back: lulugram backend source repo

lulugram backend source repo. Contribute to wmf34a/lulugram-back development by creating an account on GitHub.

github.com

 

heruku에 spring 앱을 배포하려면 할게 좀 있는데

 

먼저 Procfile를 만들어 준다. ( project 루트 디렉토리에 확장자 없이 생성 )

web: java -Dserver.port=$PORT $JAVA_OPTS -jar [실행될 jar파일 경로]

위 처럼 파일에 작성해준다. 저는 target 이란 폴더를 만들어 빌드한 파일을 넣어 주었다.

이런식으로?? ㅋㅋ

 

그 다음 Port 설정도 해주었다. Heroku는 실행 할 때마다 port를 자동으로 지정해주기 때문에 고정시키기 위해서

application.yml ( application.properties 파일을 rename 해주었다. ) 파일에

요런식으로 80포트로 작성했다.

 

참참 할게 하나 더 있다. heroku는 기본적으로 java8을 지원하기때문에 파일 하나를 더 만들어서 세팅해주자

(  필자는 java 11로 진행했음 )

project 루트 경로에  system.properties 을 생성한 후 아래와 같이 입력

( 참고 블로그 https://pythonq.com/so/java/1495517 )

java.runtime.version=11

 

자 이제 heroku 회원가입 및 배포를 진행해보자.


2. heroku 회원가입

heroku.com

 

Cloud Application Platform | Heroku

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

www.heroku.com

위 홈페이지 접속 후 회원가입을 해준다.

 

회원가입후 대시보드에서 Create New app을 눌러준다.

App name 에다가 서비스할 프로젝트 이름을 명명해준다. ( 고유한 이름을 써줘야 함 )

그 다음은 heroku에서 하라는대로 배포하면 된다. 


3. heroku 배포

 

그 전에 heroku 부터 설치해주도록 하자 ( https://devcenter.heroku.com/articles/heroku-cli )

하지만 난 우분투에서 진행했기 때문에 

$ heroku login -i

를 통해 로그인 해줬다. 콘솔창에 대략 이런식으로 나오면 이메일 비번치고 로그인 하면 된다.

git 저장소로 사용할 폴더로 이동애서 repository를 생성한다. 생성한 spring boot 프로젝트를 .git 폴더를 생성한 곳으로 복사한다.

heroku git:clone -a lulugram

 

변경 사항을 스테이지에 올린 후 커밋 메시지를 포함 한 후 커밋한다.

git add .

git commit -am " first commit "

 

push 해주면 끝!

git push heroku master

터미널에서 배포로그를 볼 수 있고 웹화면에서도 볼 수 있다.

 

https://lulugram.herokuapp.com/api/hello

간단하게 작성한 rest api 결과다. 잘나온다. 


반응형

4. heroku 꿀팁

 

4-1 heroku local time 변경하기

UTC로 설정되어 있기 때문에 KST로 변경해 준다. ( 대괄호는 뺴고 앱이름만 쓰자 )

heroku config:add TZ="Asia/Seoul" --app [ APPNAME ]

4-2 heroku sleep 해제

heroku는 30분간 접속이 없으면 휴면 모드로 전환되어 최초 접속이 다소 느릴 수 있다.

그 부분을 해결해 보자.

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=writer0713&logNo=221507833658 

 

[Linux] heroku sleep 방지

Heroku에 app을 deploy 하면 일정시간 (약 30분) 동안 접속이 없으면 자동으로 서버가 sleep (Idle) 모드...

blog.naver.com

위 블로그에 있는 2가지 방법중 필자는 리눅스 서버에서 크론탭을 날려주는 것으로 적용했다.

 

4-3 git hub action 추가

아래 블로그에 잘 나와 있다.

https://malwareanalysis.tistory.com/131

 

github action과 heroku를 이용한 스프링부트 자동화 빌드/배포

목차 안녕하세요. 이 글은 githbub action과 heroku를 이용해서 스프링부트 애플리케이션을 무료로 배포하는 과정을 설명합니다. 실습이 막히신 분들은 영상을 참고하시면 좋을 것같습니다. https://yout

malwareanalysis.tistory.com

 

4-4 heroku cli 배포 방식이 아닌 github 와 바로 연동해서 배포하기

https://dunchi.tistory.com/74

 

[CI·CD] Heroku에 배포하기

웹 사이트를 개발하고 사용자들에게 오픈하려면 접속 가능한 서버를 돌려놓아야한다. 내 컴퓨터를 방화벽 등 any로 오픈하고 24시간 켜놓을 수 있지만,,, 그렇게 원하는 사람은 많지 않을 것이다.

dunchi.tistory.com

 

 

이번 포스팅은 여기까지 하고 다음 포스팅에선 heroku에 DB를 생성해 보도록 하겠다.

728x90
반응형

댓글