😇

時代は Heroku じゃなくて fly.io

2023/08/04に公開

はじめに

北海道大学の足手まとい、hayama (yamasan)です。
なんとなく記事を書きたくなったので初投稿です。

Heroku の無料版が無くなり、基本有料になったみたいですね。
これは由々しき事態!
自分はデプロイなんてしないから知らないですけどね!

というわけで、時代はもはや Heroku ではない。fly というわけです。
公式チュートリアルから抜粋して、自分用のメモにしたいと思います。
ちなみに、時間はかかりますが超簡単です。

flyctl のインストール

macOS

$ brew install flyctl

あるいは、

$ curl -L https://fly.io/install.sh | sh

flyは違うやつがインストールされるので、flyctlになっているか気をつけましょう。

Linux

$ curl -L https://fly.io/install.sh | sh

Windows

天下のWindowsですが、PowerShell で入れます。WSL2使っている人がほとんどだと思うので、その人達は普通にcurl使ってください。

$ pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

Fly クイックツアー

公式チュートリは、"Speed-run"って書いてます。しゃれてますね。

今回はデモアプリとして、https://github.com/fly-app/go-example を fork し、自分のリモートリポジトリからクローンしてみましょう。

私は自分のGitHubアカウント(yamasanaqb)に、"go-example-forked"としてフォークしました。

$ git clone https://github.com/yamasanqb/go-example-forked.git

つぎに、

$ cd go-example

とアプリのルートに移動しましょう。一応動作確認もしておきます。

$ go run go.app

ちなみに、Go アプリを動かすには、

brew install golang

とかが必要です。

こんなアプリが出てきたでしょうか。ロケールを設定していないので、Hello from Flyしか出てこないですね。

まず Fly にログインします。

fly auth login

ログインページに移動しますので、サインアップしてください。ちなみに、無料枠を利用するにはクレジットカードの登録が必須です。
自分はイヤイヤ登録しました。

このデモアプリは DB とかと無縁なので、

fly launch --now

で十分です。

? Choose an app name (leave blank to generate one):と出てきますが、名前とか必要ないので、空欄にしておきます。

? Choose a region for deployment:は、Tokyo, Japan (nrt)を選んでいます。

この後、Docker がなんちゃらとかいって延々と Loading が続きます。仕方ないですね。

完了したら、

fly tokens create deploy -x 999999h

として、トークンを作成、GitHub リポジトリ>Settings>Secrets and variables>Actions と進んで新しいシークレット「FLY_APP_TOKEN」を作成し、コピペしてください。

次に、
アプリのルート/.github/workflows/fly.yml
を作成します。

name: Fly Deploy
on:
  push:
    branches:
      - master
jobs:
  deploy:
    name: Deploy app
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: superfly/flyctl-actions/setup-flyctl@master
      - run: flyctl deploy --remote-only
        env:
          FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

としておけばひとまずOKです。

fly launch --nowのときに出てきた URL を入力して、デプロイされているか確認してみましょう。

こんなところですかね。
個人的にはデプロイは Heroku より簡単で楽なんじゃないかと思います。

Heroku ロス勢が Fly に流れてきそうですね。
Fly は今のところめちゃくちゃ太っ腹なので、このままでいてほしいです。

いかがでしたかとは意地でも言いません。

参考

Fly.io の公式ドキュメント
https://fly.io/docs/app-guides/continuous-deployment-with-github-actions/
こっちのほうがわかりやすい。

ベル15の開発ブログ さん
https://bel-itigo.com/migrate-from-heroku-to-flyio/
Heroku から移行する、みたいな趣旨の記事です。無料枠の説明がめちゃくちゃわかりやすい。

質問などございましたら、お気軽に私じゃない人に聞いてください。

Discussion