9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M1 Mac で Cloud Run に デプロイする際の注意点

Posted at

はじめに

いつも使用しているIntel Mac の調子が悪い!
そうだ、この前買った M1 Mac でこれからは開発しよう!と思い立ったのが昨日の昼間...
特に docker 周りで辛い思いをたくさんしたがローカルでの開発環境は整った。いざデプロイしようと今まで通りのスクリプトを動かしてみたら動かず...

Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information

エラーもポート関係のエラーのようで Dockerfile もスクリプトも読んでも何一つ問題が見当たらない...
普通にデプロイが成功している Intel Mac と比較をしながら調査をしているとどうやら M1 Mac のビルドに問題があるようだった。

前提

デバイス環境

  • MacBookAir (M1, 2020)
  • Apple M1
  • メモリ 16GB
  • macOS Bug Sur

システム環境

  • Docker version 20.10.8
    • Use gRPC FUSE for file sharing OFF
    • Use Docker Compose V2 OFF
  • rosetta2 インストール済み
  • google-cloud-sdk インストール済み

Rosseta の有効

お使いの terminal でまずは 情報を見る → Rosetta を使用して開く を確認し、 Rosetta を有効にします。

スクリーンショット 2021-10-05 2.21.14.png
スクリーンショット 2021-10-05 11.24.20.png

M1 でのコンテナのビルド

次に GCR にあげるためのコンテナをビルドします。こちらの工程で従来の Intel Mac とは違ったコマンドが必要になります。

docker buildx build --platform linux/amd64 -t コンテナ名 .

buildx についての公式ドキュメントはこちら
https://matsuand.github.io/docs.docker.jp.onthefly/buildx/working-with-buildx/

どうやら マルチプラットフォームのイメージビルドを行う際に活躍してくれるみたいです。

残りの工程

ビルドができましたら後は従来通りの工程と同じです。tag つけて GCR に push してそれを CloudRun でデプロイするだけ。

タグをつける

docker tag コンテナ名 gcr.io/プロジェクト名/コンテナ名

GCR に Push

docker -- push gcr.io/プロジェクト名/コンテナ名

CloudRun にてデプロイ

gcloud beta run deploy CloudRun 上のサービス名  --project プロジェクト名
...

無事にこれでデプロイできるはずです。
エラーがポート関係
おそらくビルドの際に注意するように心がければ AWS の ECS などの別サービスでもいけるはず。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?