Fly.ioに登録してLaravelをデプロイしてみる
2022-11-07 2022-11-07
fly.ioとは
fly.ioは、世界規模のアプリ配信プラットフォームです。 Laravelなどで作ったサービスを公開することができます。
herokuの代替サービスとして注目されています。
登録する
登録ページよりにて、名前(Full name)、Email(メールアドレス)、Password(パスワード)を入力してCreate My Account
ボタンでユーザー登録します。
githubでも登録できます。
今回は、メールで登録してみました。
登録後は、クレジットカード登録ページが出てきますが、
下がのTry fly.io for free
をクリックすれば登録せずに進みます。
(しかし、fly.io用の設定初期化時にエラーになってしまい、クレジットを登録する必要がありました。後でも設定することになりました。)
fly.ioのダッシュボードページへと遷移しました。
登録メールあてに確認メールが来ているはずなので、メール文中のVerify Email
リンクをクリックして認証しておきます。
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
という設定ファイルが生成されました。
これが、node
やphp
のバージョンの指定や環境変数(シークレットではないやつ)などのデプロイ先の設定をするファイルになります。
設定が終われば実際にデプロイして、サービスを公開します。 下のコマンドでデプロイします。
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プロジェクトが見れるようになっています。
そらにアプリ情報のページへ移動し、Hostname
のリンクを開くと、
実際にデプロイしたLaravelプロジェクトのトップページが表示されました。
これで、webサービスとして提供できるようになりました。
最後に
fly.ioの登録をして、試しに新規のLaravelプロジェクトを公開してみました。
少しつまったこともありましたが、思った以上に簡単にデプロイでき驚きました。
今回はCLIからデプロイしましたが、githubのmain
ブランチにpushした時にデプロイされるようにしたいので、今後はそのような仕組みにできないかを調べていきたいです。