コンテンツに移動
デベロッパー

Cloud Run でソースベースのデプロイを試す

2021年11月1日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 10 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。

最近まで、次の方法で Cloud Run にコードをデプロイしていました。

  1. Dockerfile を使用してコンテナベースのアプリを定義する。

  2. コンテナ イメージをビルドし、Container Registry に push する(通常は Cloud Build を使用)。

  3. コンテナ イメージを Cloud Run にデプロイする。

去る 12 月に、Google は Cloud Run 用ソースベース デプロイのベータ版のリリースを発表しました。これは、上記の 2、3 の手順を、1 つのコマンドにまとめたものです。さらに重要なのは、サポートされている言語バージョンの Dockerfile も不要になることです。

これにより、ついに、複雑なコンテナ イメージの作成について心配することなく、1 つのコマンドでソースコードから実行中の Cloud Run サービスにデプロイできるようになりました。Cloud Run のデプロイ エクスペリエンスが Cloud Functions や App Engine と同等になったのは素晴らしいことです。

ソースベースのデプロイが一般提供されるようになったことを読み嬉しく思い、既存のサンプルを利用して、ソースベースのデプロイを使用するように変換することにしました。

従来のデプロイ エクスペリエンス

以前は、次のような方法でアプリをデプロイしました。シンプルな .NET Core 3.0 のウェブ アプリケーションでした。

まず、Dockerfile を書く必要がありました。これはより複雑なアプリケーションでは、容易なことではありません。

そして、Cloud Build でコンテナ イメージをビルドしました。

読み込んでいます...

最後に、Cloud Run にデプロイしました。

読み込んでいます...

新しいデプロイ エクスペリエンス

新しいデプロイ エクスペリエンスを試す前に、アプリを .NET Core 3.1 にアップデートし、Dockerfile を削除しました。

コマンド 1 つでアプリのデプロイができるようになりました。

読み込んでいます...

この出力から、Cloud Run では、Google Cloud Buildpacks を使用してアプリの種類を検出し、Cloud Build でコンテナを構築して Cloud Run にデプロイするというすべての工程を 1 つの手順で行っているのがわかります。

読み込んでいます...

まるで魔法です!

回避策

お使いのアプリが Google Cloud Buildpacks でサポートされている言語バージョンのものであれば、新しいデプロイ エクスペリエンスは優れたものになります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_ZxxAA72.max-500x500.max-500x500.png
Google Cloud Buildpacks がサポートする言語とバージョン

しかし、お使いのアプリの言語バージョンが Buildpacks でサポートされていない場合はどうなるでしょうか?

確認するために、.NET 5.0 バージョンのアプリを作成し、デプロイを試しました。エラーが発生してビルドは失敗しました。そこで、Cloud Build のログが失敗した理由の手がかりになります。

読み込んでいます...

このビルドには、.NET Core 3.1.413 の最新長期サポート(LTS)バージョンが使用されていて、こちらで使用したアプリは .NET 5.0 です。これは予期されたエラーです。すべてのビルダーがすべてのバージョンに対応できるわけではありません。

しかし幸いなことに、回避策があります。.NET 5.0 を使用するために Dockerfile を手動でビルドし、そのソースを使って再度ビルドを試みました。

読み込んでいます...

これで Dockerfile がビルドに使用され、Cloud Run サービスが問題なくデプロイされていることがわかります。

お試しください

ソースから直接デプロイするまたは、カスタム Dockerfile を使ってデプロイするどちらの場合でも、新しいソースベースのデプロイでは、コードから実行中の Cloud Run サービスに非常に簡単に移行できます。ドキュメントをご覧になり、ご不明な点やフィードバックがございましたら、Twitter @meteatamel までお気軽にお寄せください。

- デベロッパー アドボケイト Mete Atamel

投稿先