はじめに
GoogleCloudのCloudRunをキャッチアップするにあたって、実際に手元で触れる環境がほしかったため、サンプルの環境を作成してみる。
適当なアプリ作成
Next.jsのコマンドでDockerファイルを含むプロジェクトを自動生成してくれる。便利すぎる...
yarnで作成しました。
yarn create next-app --example with-docker nextjs-docker
特に質問等もなくコマンド実行でアプリ完成。
Githubにリポジトリ作ってpushする。
Dockerファイル見ればわかるが、ビルド時にlockファイル参照するのでyarn install
実行してlockファイル作っておく。
(lockファイルないとビルドに失敗する)
git init
git remote add origin <git url>
git add .
git commit -m "First Commit"
git push origin main
はい完成。
なぜかjsonファイルがgitinitされてたのでコミット多め。
yarn.lockもgitに上がってなかった...
Cloud Runへデプロイ
GoogleCloudに新規プロジェクト作成
[プロジェクトの選択] → [新しいプロジェクト]
よしなに名前つける。
サイドメニューから[CloudRun]開く。
[サービスの作成] → [リポジトリから継続的にデプロイする(ソースまたは関数)]
ここでGithubとの接続やリポジトリ選択する必要があるが、認証やAPIが必要な旨の警告が出る場合はそれらに従って必要な手順を踏む。
ビルド構成のブランチはデフォルトでmainブランチが選択されている。
要するに、mainブランチの内容がデプロイされる。(任意で変更可能)
ビルドタイプはDockerfileを選択する。
そのまま[保存]。
名前を入力してリージョン選択。今回は大阪にした
次にデプロイするサービスの認証について設定する。認証を必要とする場合は [認証が必要] を選ぶが、今回は誰でもアクセスできるように [未認証の呼び出しを許可] を設定する。
そのまま下にスクロールして、コンテナの編集を開く。
コンテナポートが8080になってるが、先ほど作成したNext.jsのサンプルアプリは3000でサーバーが起動するようになっているので3000に変更する。(Dockerファイルに合わせるの内容に合わせる)
最後に[作成]を押して数分待つとデプロイが完了する。
HTTPSでアクセスできるURLが自動で発行されるので、このリンクをクリックするとNext.jsアプリを開くことができる。
(HelloWorldはあとでテストするためにpushした内容)
これで、mainブランチに取り込まれた内容は自動でデプロイされる。
参考