LaravelのアプリケーションをFly.ioでデプロイする
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