Fly.ioに登録してLaravelをデプロイしてみる

2022-11-07
2022-11-07

記事イメージ画像

fly.ioとは

fly.ioは、世界規模のアプリ配信プラットフォームです。 Laravelなどで作ったサービスを公開することができます。

herokuの代替サービスとして注目されています。

登録する

登録ページよりにて、名前(Full name)、Email(メールアドレス)、Password(パスワード)を入力してCreate My Accountボタンでユーザー登録します。 githubでも登録できます。 今回は、メールで登録してみました。

flyio-sign-up

登録後は、クレジットカード登録ページが出てきますが、 下がのTry fly.io for freeをクリックすれば登録せずに進みます。 (しかし、fly.io用の設定初期化時にエラーになってしまい、クレジットを登録する必要がありました。後でも設定することになりました。)

flyio-subscribe

fly.ioのダッシュボードページへと遷移しました。

flyio-dashboard

登録メールあてに確認メールが来ているはずなので、メール文中のVerify Emailリンクをクリックして認証しておきます。

flyio-verify

Laravelプロジェクトを公開してみる

簡単に登録できたので、試しにLaravelプロジェクトを公開してみます。

初期のLaravelプロジェクト作成しておきます。

windowsなのでwsl2とdockerを使ってlaravelプロジェクトを作成します。

curl -s https://laravel.build/test-laravel-flyio | bash

fly.ioのcliツールflyctlをインストールします。 Power shellで以下のコマンドを実行するとインストールされます。

iwr https://fly.io/install.ps1 -useb | iex

インストール後には、flyctlコマンドが使えるようになります。 このコマンドを通して操作をしていきます。 まずは、コマンドでログインします。 下のコマンドを実行すると、ブラウザでログインページが表示されるので、ログインします。

flyctl auth login

ログインが完了すると、successfully logged in as メールアドレスと表示されました。 ログインしているユーザーを確認するのには、下のコマンドを実行することでユーザーのメールアドレスを確認できます。

 flyctl auth whoami

ログインが終わったら、実際にLaraveプロジェクトをサービスとして公開してみます。

公開するlaravelプロジェクトフォルダーへ移動します。 プロジェクトのルートフォルダーで、以下のコマンドを実行して、 fly.ioの設定をします。

flyctl launch

app name(アプリ名)の記入とregion(デプロイ先地域)を選択します。 デプロイ先には、東京がありました。 デプロイ先を選択した後にエラーが発生しました。 クレジットカードを登録する必要があるようです。

Scanning source code
Detected a Laravel app
? Choose an app name (leave blank to generate one): test-laravel-flyio
automatically selected personal organization: msdd
? Choose a region for deployment: Tokyo, Japan (nrt)
Error We need your payment information to continue! Add a credit card or buy credit:

ダッシュボードのbillingからクレジットカード情報を登録し、再度実行してみました。
前回のエラー時に生成されていたファイルを上書きするか聞かれるので、すべてyes。 先ほど実行したのと同じようにデプロイ先にまで選択した後、 Would you like to deploy now?と聞かれるのでNoを選択し、デプロイはしないでおきました。
設定を見た後にデプロイを行います。

fly.tomlという設定ファイルが生成されました。 これが、nodephpのバージョンの指定や環境変数(シークレットではないやつ)などのデプロイ先の設定をするファイルになります。

設定が終われば実際にデプロイして、サービスを公開します。 下のコマンドでデプロイします。

flyctl deploy

しかし、新規で作ったLaravelプロジェクトをそのままデプロイしようとすると、 下のようなエラーがいくつか出てきてデプロイに失敗しました。

 Problem 1
#11 0.439     - symfony/console is locked to version v6.1.7 and an update of this package was not requested.
#11 0.439     - symfony/console v6.1.7 requires php >=8.1 -> your php version (8.0.25) does not satisfy that requirement

設定ファイルfly.tomlのphpのバージョンをPHP_VERSION = "8.0"からPHP_VERSION = "8.1"に変更して再度デプロイすると無事に成功しました。

成功すると、ダッシュボードのAppsから自分のサービス一覧ページへ移動でき、 そこに先ほどデプロイしたLaravelプロジェクトが見れるようになっています。

flyio-apps

そらにアプリ情報のページへ移動し、Hostnameのリンクを開くと、 実際にデプロイしたLaravelプロジェクトのトップページが表示されました。 これで、webサービスとして提供できるようになりました。

flyio-app-overview

flyio-new-laravel-project-landing-page

最後に

fly.ioの登録をして、試しに新規のLaravelプロジェクトを公開してみました。
少しつまったこともありましたが、思った以上に簡単にデプロイでき驚きました。

今回はCLIからデプロイしましたが、githubのmainブランチにpushした時にデプロイされるようにしたいので、今後はそのような仕組みにできないかを調べていきたいです。