Heroku에서 Fly.io로 (feat. Fly.io를 통한 배포 과정)
Heroku에서 자꾸 메일이 오길래 봤더니, free plan을 삭제한다는 것이었다.
11월 28일까지 조치를 취해야하는데
내 작고..작은....너무 작아서 안보이는 토이 프로젝트 하나에 plan을 업그레이드 할만한 가치는 없다고 느껴져서(?)
대체제를 찾다 Fly.io를 발견했다.
Heroku 미안
# Fly.io 가입
https://fly.io 로 가서 가입을 해주고..
$ brew install flyctl
하라는대로 명령어를 터미널에 입력해준다.
Heroku처럼 로그인을 해야하는데,
$ flyctl auth login
터미널에 입력하면 알아서 브라우저 열리고 로그인되어있으면 알아서 잘 넘어간다.
# 카드 등록
일단 카드를 등록해야한다. 무료 Plan을 사용하려고 해도 카드를 일단 등록해야한다.
대시보드로 가서 오른쪽에 보면 Add Payment method..? 로 버튼이 있는데 거기서 카드를 등록해주면 된다.
등록을 완료하면 Hobby플랜으로 시작된다.
Hobby Plan은 무료사용량을 넘은 것만큼만 지불하는데,
- Up to 3 shared-cpu-1x 256mb VMs
- 3GB persistent volume storage (total)
- 160GB outbound data transfer
이정도가 무료인듯
내 앱은 찐따여서 상관없을 듯 한데, 아예 막히는게 아니라 넘으면 과금이라 이건 지켜봐야 할 것 같다. ㅎ
아무튼 카드 등록을 안하면 배포를 못하니까 꼭 해주기
# Deploy
$ cd {소스코드 경로}
터미널에서 소스코드가 있는 경로로 이동해준다.
$ fly launch
그 상태에서 위 명령어를 쳐주면
스캔하고 알아서 app 종류(?)를 선택해주는 것 같다.
그리고 앱 이름을 입력해달라고 하는데, 입력해주고
이제 리전을 선택해달라는 메시지가 나온다.
암거나 하고..엔터치삼
이제 질문이 막 나오는데 자기 프로젝트에 맞게 알아서 대답하면 된다.
- Would you like to set up a Postgresql database now? ➡️ No로 함
- Would you like to set up an Upstash Redis database now? ➡️ No로 함
- Would you like to deploy now? ➡️ Yes
그럼 열심히 뭔가를 알아서 돌려준다. 기다리면댐
==> Creating release
--> release v1 created
--> You can detach the terminal anytime without stopping the deployment
==> Monitoring deployment
1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing]
--> v1 deployed successfully
이런식으로 deployed successfully 가 보이면 배포 성공..ㅎ_ㅎ
사실 계속
v0 failed - Failed due to unhealthy allocations - no stable job version to auto revert to and deploying as v1
이런 오류가 나서 좀 고생했는데..
내 소스코드의 index.js 파일의 포트와 fly.toml의 포트가 안맞아서 나는 문제였다.
배포가 실패했다면 원인을 수정한 뒤 fly launch 말고 fly deploy를 쳐주면 된다.
(그럼 알아서 v0, v1, v2...순으로 릴리즈함)
+ 실패 원인을 찾기 위해 로그를 보고싶다면
$ fly logs -a {앱 이름}
을 통해 확인 할 수 있다.
대시보드로 가면, 처음에 앱 이름으로 등록한 앱이 추가되어있을거다.
앱에서 사용하는 Host를 herokuapp에서 fly.dev로 수정해주면 된다.
계속 마음의 짐이었는데...하나 덜었군