10/15/2019

Deploy Golang webapp on Heroku(Golang 으로 만든 웹 어플리케이션 Heroku에 배포하기)

요즘 공부도할겸 golang 으로 끄적끄적 만들어보고 있는게 있습니다.
그 중 일부는 웹 환경으로 구성하고 heroku에 띄울 생각인데, 루비처럼 사전에 세팅이 필요한 부분들이 있어서 내용 정리해둡니다.

(루비보단 훨씬 간단해요)


1. pre-setting

우선, GoLand 같은 IDE를 쓰더라도 빌드 로그 떄문에 커밋까지만 IDE에서 하는게 개인적으론 편합니다. 어차피 각종 명령 때문에 heroku client 설치가 필요하니 이참에 한번 깔아줍시다.

Install heroku cli

On Mac
$ brew install heroku

On Ubuntu 16+
$ sudo snap install heroku --classic

On Windows
64bit: https://cli-assets.heroku.com/heroku-x64.exe
32bit: https://cli-assets.heroku.com/heroku-x86.exe

설치가 되면 $ heroku 형태로 heroku 앱들을 제어할 수 있습니다.

Install godep & Dependency setting

다음으론.. 디펜던시 잡아주기 위해 godep을 깔아서 디펜던시를 잡아줍니다.

Install godep
$ go get -u github.com/tools/godep

set dependency
$ godep save ./...

2. Write Procfile

자 거의다 왔습니다. Rails는 gem file 설정부터 원래 레일즈 배포에서 하는짓들(db:migrate 등..)을 heroku 명령을 넣어주어 처리해야하는데, go의 경우는 Procfile이란 어떤 파일을 실행할지 결정해주는 파일을 통해 지정한 바이너리를 실행시킬 수 있습니다.
(heroku에서 rails 배포하기)

Procfile에서 사용하는 타입이 몇가지가 있는데, 이 중 web은 LB와의 매핑을 해줄 수 있는 지시어로 보통의 경우 web을 많이 사용하게 되실 것 같습니다.

Procfile
web: yourbinaryname

command..
echo "web: testapp" > Procfile

3. Make Heroku App & Push heroku git

자 그럼 이제 heroku에도 앱을 만들어줘야합니다. (그냥 git repo 만든다고 생각하시면 편합니다.)

heroku create mytestapp

만들어주시고, git remote를 앱의 이름으로 지정한 후 heroku로 푸시를 해주시면 자동으로 배포됩니다.

Setting Git
$ git init .
$ git add *
$ git commit -m 'first init'
$ heroku git:remote -a mytestapp

Push!
$ git push heroku master

배포가 완료되면 Procfile에 따라서 지정된 바이너리가 실행됩니다. (보통 main.go?)

Conclusion

루비만 거의 5년가까이 쓰다가 다른 언어를 해보려고 하니 아직 손에 좀 익지는 않습니다. 다만 golang 은근히 재미있습니다. 혹시나 관심 있다면 한번 해보시는 것도…
아무튼 heroku 배포는 이정도면 쉽게 하실 수 있을것 같네요.

happy hacking / coding!


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment