오랜만의 배포!
나중에 다시 보기 위해 꼼꼼히 기록!
1. create new app 클릭
2. app-name 입력 후 미쿡(US)로 해서 생성!
협업하던 GitHub 프로젝트가 아닌 heroku git 에 push할 프로젝트를 만들 것이다.
새 폴더 생성
git bash command - 해당 폴더로 cd 후
git clone https://github.com/myid/myproject.git
해당 폴더에 가서 숨김파일, 폴더 보이게 하고 .git 폴더 삭제
gitHub에 새로운 레포지토리 생성( 현재 단계에서 필수 아님! 나중에 해줘도 됨.)
git init
$ heroku git:remote -a <app-name>
여기서 app-name은 0단계에서 만들어준 app-name 이다.
git add - commit - push 를 해준다.
$ git add .
$ git commit -am "first comm"
첫커밋이라 싸악 들어감.
$ git push heroku HEAD:main
(GitHub는 이제 master가 아니라 main이 표준이라고 한다.)
ㅎㅎ 첫 시도부터 오류가 난다.
쭈루룩 remote push 한 흔적에서 오류를 찾을 수 있으니 그냥 넘기지 말고 다 잘 읽어보자.
자바 버전이 안맞는다는 오류를 찾았다.
Heroku 는 Java 8 을 기본제공하는데, 내 프로젝트는 JAVA 11 을 쓰기 때문에 수동으로 바꿔줘야 함.
(오류잡기 1 로 이동)
Java 오류를 잡고 push를 잘 해도 처리해줄게 많아서 그냥 모든 오류들을 한번에 잡기로 했다.
오류 다 잡고 add - commit - push 진행하면 뚝딱 잘 될 것이다.
(오류잡기 2~3 )
한줄로 뚝딱 마무리.
jar를 build하지도 않고 넣어주지도 않고 프로젝트만 push했었다.. 바본가?
쉽게 build하는법 : Gradle에서 Tasks/build/bootjar 더블클릭하면 됨.
(CLI로 하는법 : https://gigas-blog.tistory.com/114 가암사합니다ㅠ)
하지만 그전에!!!!! build된 .jar를 디폴트 경로 말고 다른 폴더에 넣기 위한 작업을 해주자.
왜냐면 springboot가 자동 생성해줬던 .gitignore 를 보면 애초에 build 폴더는 전부 ignore되어있기 때문이다.
그래서 ignore에 걸리지 않는 새로운 폴더인 target 폴더를 root에 만들어 준 후 build.gradle
맨 마지막줄에 다음과 같이 추가해준다. 그러면 이제부터는 build를 하면 jar가 target으로 보내진다!
bootJar {
destinationDirectory = file("./target")
}
(default - build/libs/OOO-0.0.1-SNAPSHOT.jar )
(custom 후 - target/OOO-0.0.1-SNAPSHOT.jar )
Procfile
파일을 루트에 추가해준다. (확장자가 없음에 주의!)web: java -Dspring.server.port=$PORT -Dspring.profiles.active=production $JAVA_OPTS -jar "target/OOO-0.0.1-SNAPSHOT.jar"
요 한줄만 넣어주면 됨.
무슨말들이냐면..
port=$PORT
사용할 포트. 일단 변수로 해놓고 yml 에서 port 번호 설정해줄거임! (오류잡기 4로)
$JAVA_OPTS -jar "jar의경로"
active=production
은 일단 배포 환경이기 때문에 활성 프로파일이 production이라고 생각하자.
활성 프로필은 좀더 공부가 필요하다.
내 로컬 DB는 h2라서 heroku add-on 을 통해 heroku에서 제공하는 DB를 붙여줘야 한다.
여러 RDBMS 중 heroku에서 기본으로 제공해주는 Heroku Postgres 을 사용할 것이다.(무료 버전 있음)
Heroku 내 프로젝트 DashBoard 접속
Resources Tab Click!
Heroku Postgres 검색 후 add-on!
add-on 후 생성된 Heroku Postgres DashBoard 접속
Settings Tab - View Credentials 버튼 클릭
이렇게 url , username, password, port 번호까지 잘 나온다. 요 녀석들을
application.yml 에 가서 셋팅해줄 것이다.
resources/application.yml
url 맨 앞줄에 jdbc: 붙이는것 주의~
driver-class-name 는 org.postgresql.Driver
로 해주면 되는데,
먼저 build.gradle 에 가서 의존성 코드 수정해야됩니다.
(h2 driver에서 postgresql driver 로 교체하기 위해!!!)
runtimeOnly 'org.postgresql:postgresql'
해주고 업데이트하면 잘 import 됨!
그리고 application.yml 맨 마지막줄에 PORT 넣어줘야되는것 잊지말기!
-END-
PATH="$PATH:/c/Program Files/Heroku/bin"
PATH추가하면 바로 잘된다!
clearDB 는 한글 지원 안 하니 jawsDB를 써라.
덕분에 삽질 시간을 줄일 수 있었습니다.. 감사합니다 :)