🍤

LaravelのアプリケーションをFly.ioでデプロイする

2023/02/28に公開

Herokuの無料期間が終了するため代替となるホスティングサービスを探していた、デプロイが簡単そうなのと日本リージョンがあるのでFly.ioを試してみた

Fly.ioとは

  • どこにいてもユーザーの近くに分散型のリアルタイムアプリを簡単にデプロイできるように設計されたPaaSのクラウドサービス。同じorganizationのFly.ioアプリは、高速な内部のWireGuard(VPN)ネットワークを介して非公開で互いに通信できる。

手順

1. コマンドラインツールのflyctlをHomebrewにインストールする

brew intall flyctl

※ Fly.ioのアカウントがない場合は作成する

fly auth signup

2. Fly.ioにログインする

fly auth login

3. 設定ファイルを作成する

設定ファイルを作成する
fly launch
あなたのアプリケーションをデプロイするための設定ファイルをソースコードをスキャンして自動的に作成します。下記のファイルが生成される
Dockerfile, .dockerignor, fly.toml, .fly

fly.toml - Flyにホスティングするための設定ファイル
.fly - NginxとPHPをコンテナ内で動作させるための設定ファイルを含んだディレクトリ

PHPとNodeのverisonは自動的に検出しようとするが、localとversionが異なればfly.tomlとDockerfileのPHP_VERSIONとNODE_VERSIONを編集する

※ デプロイ時にマイグレーションを行いたい場合は下記をfly.tomlに追記

[deploy]
  release_command = "php /var/www/html/artisan migrate --force"

4. Postgresクラスターを作成する

fly pg create
実行後に表示されるUsernameやPasswordなどは環境変数を設定する時に使用するのでコピーしておく

※ 無料アカウントの場合は、Developmentを選択する

5. 環境変数を設定する

秘密情報を登録する

fly secrets set \
	DB_HOST=<Hostname> \
	DB_DATABASE=<DB_NAME> \
	DB_PORT=5432 \
	DB_USERNAME=<DB_USERNAME> \
	DB_PASSWORD=<DB_PASSWORD> 

※ 公にしていい情報はfly.tomlの[env]に追記してもいよい

[env]
  APP_ENV = "production"
  DB_CONNECTION = "pgsql"

6. デプロイする

fly deploy

7. マイグレーションする

PostgreSQLに接続する
fly postgres connect -a <postgres-app-name>

データベースを作成する
CREATE DATABASE <DB_NAME>;

\q

インスタンスにssh接続する
fly ssh console

cd /var/www/html

マイグレーションを実行する
php artisan migrate

8. アプリケーションを立ち上げる

fly open

★ Tips

ログを表示する
fly logs

ステータスを表示する
fly status

VMを指定してデバッグする
fly vm status <ID>

secretsの一覧を表示する
flyctl secrets list

ボリュームの一覧を表示する
fly volumes list

終わりに

  • デプロイ手順がHerokuみたいで使いやすかった

Discussion