こんにちはかみむらです。以前AWS Amplify ConsoleにReactアプリをホスティングする記事を書きました。
code-log.hatenablog.com
今回はGAE(Google App Engine)にホスティングします。GAEとはGoogleが提供するPaaSです。nodejsや、Go、Pythonなど、様々な言語に対応しています。特にGAEのエッジキャッシュは非常に強力で、設定ファイルのapp.yamlに数行記述するだけで設定が出来てしまいます。。今回はキャッシュ設定はしないので、気になる方はドキュメントを読んでみてください。
そして、CloudBuildでGAEへのデプロイを自動化します。実際にGAEをプロダクション環境で使うためにはCI/CDサービスを利用すると思います。CloudBuildはGoogleが提供しているCIサービスで、GAEとの連携も簡単です。
それでは実際にやってみます。
前提
GCPでクレジットカードが登録済みであることが必須です。課金設定を有効にしてください。
console.cloud.google.com
node.jsのパッケージマネージャに yarnを使います。開発時のyarnのバージョン
$ yarn --version 1.15.2
今回書いたソースの雛形はこちらにあります。
github.com
プロジェクトの作成
プロジェクトはcreate-react-appをベースにしていきます。コマンドラインで上で簡単にプロジェクトの雛形を作成してくれます。
$ npx create-react-app my-app
プロジェクトが作成されたら無事に動くか確認してみましょう。アプリを起動して、localhost:3000にアクセスしてみます。
$ cd my-app $ yarn start
無事に起動しました。これがデプロイするプロジェクトのベースになります。
GAEのデプロイ設定
ここからはGAEにデプロイするため下準備をしていきます。app.yamlのファイルを作って、下記の内容を書きます。ここではビルドされたindex.htmlファイルをハンドラーで読み込むようにしています。
app.yaml
runtime: nodejs10 handlers: - url: / static_files: build/index.html upload: build/index.html secure: always - url: / static_dir: build
Cloud Buildの設定ファイルを作成
続いて、cloudbuild.yamlを作成します。これはCloud Buildでビルドするための設定ファイルになります。
こちらの設定は非常に単純で、yarnで依存関係をインストール後に、ビルドさせます。こちらは現在package.jsonのscriptsに設定されているbuildコマンドが走ります。そして、gcloudでGAEにデプロイします。
cloudbuild.yaml
steps: - name: 'gcr.io/cloud-builders/yarn' args: ['install'] - name: 'gcr.io/cloud-builders/yarn' args: ['run', 'build'] - name: 'gcr.io/cloud-builders/gcloud' args: ['app', 'deploy', 'app.yaml']
下準備は終わったので、こちらのプロジェクトをGitHubにプッシュしましょう。
GCPの設定
ここからはGCP上での操作になります。上記で説明しましたが、GCPの課金設定を有効にする必要があります。
まずはデプロイするために権限を設定する必要があります。GCPのサイドバー からApiサービス>ライブラリをクリックします。このページの検索バーからApp Engine Admin Apiを検索します。
こちらのページからApp Engine Admin APIを有効にしてください。
次にCloud Buildの設定からサービス アカウント権限のApp Engine管理者を有効にしてください。これで権限管理の設定は終了です。では実際にCloud BuildでGAEにデプロイしてみましょう!
ClouBuileの管理画面からトリガーを作成してみましょう。
リポジトリを選択します。今回はGitHubにソースコードを置いたので、GitHubを選択します。
そしてOnly select repositoriesを選択して、先ほどプッシュしたプロジェクトを選択します。そしてSaveしてください。
指定したレポジトリにチェックを入れて、接続サービスの同意へのチェックに入れます。リポジトリを接続してください。
こちらは特に設定をせず、pushトリガーを作成をクリックしてください。
トリガーが作成されました。早速トリガーを実行してみましょう。こちらを実行すると、cloudbuild.yamlの設定内容に沿って、実行されます。
無事ビルドが成功しました。
GCPのサイドバーからApp Engineのページに行くと、URLが発行されてると思います。そこからURLに飛んでみると、デプロイが成功してるのがわかります。
最後に
Reactプロジェクトの準備からCloud BuildでGAEにデプロイしてみました。GAEのホスティングのしやすさに驚きました。今後、個人サービスに利用する機会があったら、積極的に使用していきたいです。