[検証]SvelteKitで作成したサイトをCloud RunにデプロイしてFirebase Hostingで配信してみた
はじめに
先日プレビュー版としてリリースされた Firebase Hostingを使ったCloud Runの動的コンテンツの配信
をSvelteKitを使って実践した記録です。
※ Cloud SDKの設定は完了して gcloud コマンドが使える前提です
※ SvelteKitの作成部分は割愛しています
-> こちらを利用しています https://kit.svelte.jp/docs/creating-a-project
やってみてどうだったか?
- Cloud SQLなど使ったCloud Runで構築したサイトを気軽にカスタムドメインとCDNを使って配信できるようになる
- 今までなら、Cloud Load Balancerを経由してやらないとできなかった点ができるようになった
- Cloud Run自体のドメインマッピングもあるが、これはGAになるのだろうか。
- コスト的な面でも、Firebase Hostingであれば転送量も
360 MB/日
が無料
- 今までなら、Cloud Load Balancerを経由してやらないとできなかった点ができるようになった
- 統合の設定自体も特に詰まることもなく、サクサク進みました。
サンプルコード
実際に使ったコードはこのリポジトリに置いています。
SvelteKitのコンテンツはデモをそのまま利用しました。
デプロイ用の設定は以下を利用しています。
Cloud Buildを使ったイメージの作成とデプロイ
以下のコマンドで Dockerfile
を cloudbuild.yaml
の内容でビルド/デプロイを実行
gcloud builds submit .
デプロイされたCloud Runの統合機能から Firebase Hosting と接続
任意のサブドメインを設定して送信
設定が無事に完了すると、以下のような表示になります。
カスタムドメインの設定
このままでもアクセスできるようになるのですが、自分が持っているドメインでアクセスしたいと思います。
なので Firebase Hosting
のカスタムドメインを使って設定します。
案内に沿ってドメイン所有者の確認・DNSへのAレコードの設定
カスタムドメインを使ったサイトが公開完了
※ 証明書の反映までは少し時間がかかります(このときは30分ほど待ちました)
困った点たち
SvelteKitをCloud Runにデプロイする際に起きたこと
Cloud BuildでDocker imageをビルドしていたところ、このようなエラーに遭遇。
Error: The service was stopped: write EPIPE
余計なファイルを上げてしまっていたのが原因と推測し .gcloudignore
を書いてリトライしたところ無事にビルドとデプロイが完了した。
※ 以下のコマンドを実行すると、Cloud Buildに送られるファイルが確認できる
gcloud meta list-files-for-upload
Cloud Runの掃除中に起きたこと
Firebase Hostingとの接続の削除が失敗する
ただ、Firebase Consoleで見ると削除できていたので、リソース自体はちゃんと消えていた。
なので、そのまま気にせずCloud Runも削除実施。(きっとだいじょうぶ)
Discussion