🗂

AppServiceにデプロイしたい!

に公開

はじめに

AppServiceにコンテナベースでデプロイをしようと思っていました。
以前は出来ていた手順がなぜか出来なかったので別の手順を探してデプロイをしました。

いつものやり方であれば、AzureContainerRegistry(以下ACR)を使用して、そこのイメージをデプロイして、AppServiceからコンテナを選択していました。

https://learn.microsoft.com/ja-jp/azure/container-registry/container-registry-quickstart-task-cli

やっていたこと

  1. 開発していたものを、コンテナ形式でデプロイするためにdocker buildをして、ローカルで確認する。
cd frontend
docker build --platform linux/amd64 -t hoge:latest .
docker run -p 3000:3000 hoge:latest

localhost:3000でアプリの立ち上げが確認できたので、このイメージをACRに持っていく。

  1. 現在のイメージをACR用にタグ付け
docker tag hoge <ACR_NAME>.azurecr.io/hoge:latest
  1. ACRへのイメージプッシュ
docker push <ACR_NAME>.azurecr.io/hoge:latest

AppServiceの設定をしたりして、ログを確認すると...

# ログストリーム
exec format error

ARM64向けにビルドしたバイナリをAMD64で動かそうとして失敗してしまう。

いつもと同じ手順でうまくいかない...。

解決策

ACR上でイメージをビルド&プッシュ

az acr build \
  --registry devassignmanageacr01 \
  --image assign-manage-frontend:latest \
  --file frontend/Dockerfile \
  frontend

なんかこれでいけた!

AppServiceを見ると無事アプリがデプロイできました!

これから最終手段はこれを使おう。

ヘッドウォータース

Discussion