Azure Functions v4 (TypeScript) - Docker Container で実行時に関数が認識されない (404 Not Found)

apollon nishikawa 0 評価のポイント
2024-11-18T12:22:56.0933333+00:00

下記のページを見ながら docker container を使って環境をデプロイしましたが、リクエストを送信しても常に Not Foundになってしまします。ローカルのdockerでは問題なく動きます。

なにかデプロイの手順を間違えているのでしょうか?

https://learn.microsoft.com/en-us/azure/azure-functions/functions-deploy-container?tabs=acr%2Cbash%2Cazure-cli&pivots=programming-language-csharp

実行コマンド

az functionapp function show --resource-group xxxx --name xxxx-functions --function-name HttpExample --query invokeUrlTemplate

実行結果

(NotFound) Error retrieving function.
Code: NotFound
Message: Error retrieving function.

■ディレクトリ構成

functions/
├── src/
│   ├── functions/
│   │   └── HttpExample.ts
│   └── index.ts
├── Dockerfile
├── package.json
└── tsconfig.json

■ファイル内容

Dockerfile

# To enable ssh & remote debugging on app service change the base image to the one below
# FROM mcr.microsoft.com/azure-functions/node:4-node20-appservice
FROM mcr.microsoft.com/azure-functions/node:4-node20

# Install system dependencies
RUN apt-get update && apt-get install -y \
    graphicsmagick \
    ghostscript \
    && rm -rf /var/lib/apt/lists/*

ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

WORKDIR /home/site/wwwroot

# Copy package.json and install packages before copying the rest of the code to enable caching
COPY package.json package.json
RUN npm install

# Copy the rest of the code
COPY . .

HttpExample.ts

import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions'

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext
): Promise<HttpResponseInit> {
  context.log(`Http function processed request for url "${request.url}"`)

  const name = request.query.get('name') || (await request.text()) || 'world'

  return { body: `Hello, ${name}!` }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
  route: 'HttpExample'
})

■デプロイまでのコマンド一覧

func init xxxx --worker-runtime node --typescript --docker
func new --name HttpExample --template "HTTP trigger" --typescript

docker build --tag xxxx-functions-base .
docker tag xxxx-functions-base xxxx.azurecr.io/xxxx-functions-base
az acr login --name xxxx
docker push xxxx.azurecr.io/xxxx-functions-base

az functionapp create \
   --name xxxx-functions \
   --resource-group xxxx \
   --storage-account xxxx \
   --functions-version 4 \
   --image xxxx.azurecr.io/xxxx-functions-base:latest \
   --consumption-plan-location "japaneast" \
   --registry-username $(xxxx) \
   --registry-password $(xxxx)
Azure
Azure
Microsoft が管理する世界のデータ センター ネットワークを介してアプリケーションとサービスを構築、配置、および管理するインフラストラクチャおよびクラウド コンピューティング プラットフォーム。
438 件の質問
0 件のコメント コメントはありません
{count} 件の投票

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。