Azure部署Docker镜像版Python函数应用无函数显示且404问题求助
Docker部署Azure函数后无函数显示且调用404排查
我通过代码直接部署HTTP触发函数到Azure后,函数能正常显示并返回数据。但打包成Docker镜像后,本地运行正常,部署到Azure却看不到函数,调用时返回404错误。已对比两个函数应用的环境变量,完全一致。查了两天博客仍没解决,附上相关文件和日志,求帮忙排查。
Dockerfile
# Base image with Python 3.9 FROM mcr.microsoft.com/azure-functions/python:4-python3.12 # Set environment variables to avoid writing .pyc files and buffering output ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true # Install git to clone the Bitbucket repository RUN apt-get update && apt-get install -y git ENV AZURE_FUNCTIONS_ENVIRONMENT=Development #Copy secrets file RUN mkdir /etc/secrets/ ENV FUNCTIONS_SECRETS_PATH=/etc/secrets ENV AzureWebJobsSecretStorageType=Files ADD host_secrets.json /etc/secrets/host.json # Install dependencies from requirements.txt COPY requirements.txt / RUN pip install --no-cache-dir -r requirements.txt # Copy application code (optional, if you want to add any additional files or scripts) COPY . /home/site/wwwroot
密钥文件
{ "masterKey": { "name": "master", "value": "p##########################################################", "encrypted": false }, "functionKeys": [{ "name": "default", "value": "w##########################################################", "encrypted": false }] }
环境变量
[ { "name": "APP_CONFIGURATION_LABEL", "value": "production", "slotSetting": false }, { "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", "value": "InstrumentationKey=a###################################;IngestionEndpoint=https://a###################.in.applicationinsights.azure.com/;LiveEndpoint=https://a################.livediagnostics.monitor.azure.com/;ApplicationId=d######################################", "slotSetting": false }, { "name": "AzureFunctionsJobHost__Logging__Console__IsEnabled", "value": "true", "slotSetting": false }, { "name": "AzureWebJobsDashboard", "value": "DefaultEndpointsProtocol=https;AccountName=a########################;AccountKey=q################################################################;EndpointSuffix=core.windows.net", "slotSetting": false }, { "name": "AzureWebJobsScriptRoot", "value": "/home/site/wwwroot", "slotSetting": false }, { "name": "AzureWebJobsStorage", "value": "DefaultEndpointsProtocol=https;AccountName=a#############################;AccountKey=q###############################################################################;EndpointSuffix=core.windows.net", "slotSetting": false }, { "name": "DOCKER_ENABLE_CI", "value": "true", "slotSetting": false }, { "name": "DOCKER_REGISTRY_SERVER_PASSWORD", "value": "G########################################################", "slotSetting": false }, { "name": "DOCKER_REGISTRY_SERVER_URL", "value": "https://#################.azurecr.io", "slotSetting": false }, { "name": "DOCKER_REGISTRY_SERVER_USERNAME", "value": "############", "slotSetting": false }, { "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~4", "slotSetting": false }, { "name": "FUNCTIONS_WORKER_RUNTIME", "value": "python", "slotSetting": false }, { "name": "UseExpressBuild", "value": "/tmp/.cache", "slotSetting": false }, { "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "#############################################################################", "slotSetting": false }, { "name": "WEBSITE_CONTENTSHARE", "value": "a#####################", "slotSetting": false }, { "name": "WEBSITE_ENABLE_SYNC_UPDATE_SITE", "value": "true", "slotSetting": false }, { "name": "WEBSITE_HEALTHCHECK_MAXPINGFAILURES", "value": "10", "slotSetting": false }, { "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS", "value": "2", "slotSetting": false }, { "name": "WEBSITE_RUN_FROM_PACKAGE", "value": "1", "slotSetting": false }, { "name": "WEBSITE_TIME_ZONE", "value": "Australia/Sydney", "slotSetting": false }, { "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE", "value": "false", "slotSetting": false } ]
部署日志
025-01-17T04:51:32.535Z INFO - c861b3c01817 Extracting 33MB / 33MB 2025-01-17T04:51:32.643Z INFO - c861b3c01817 Pull complete 2025-01-17T04:51:32.678Z INFO - Digest: sha256:3######################################################################### 2025-01-17T04:51:32.683Z INFO - Status: Downloaded newer image for azuretestcreg.azurecr.io/azfunctiontest:latest 2025-01-17T04:51:32.699Z INFO - Pull Image successful, Time taken: 45 Seconds 2025-01-17T04:51:32.722Z INFO - Starting container for site 2025-01-17T04:51:32.727Z INFO - docker run -d -p 9131:80 --name austeamtest3_0_89c7e566 -e WEBSITE_USE_DIAGNOSTIC_SERVER=false -e WEBSITE_CORS_ALLOWED_ORIGINS=https://portal.azure.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=austeamTest3 -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=test6783.azurewebsites.net -e WEBSITE_INSTANCE_ID=5######################################################################### -e HTTP_LOGGING_ENABLED=1 testcreg.azurecr.io/azfunctiontest:latest 2025-01-17T04:51:35.762Z INFO - Initiating warmup request to container austeamtest3_0_89c7e566_msiProxy for site test6783 2025-01-17T04:51:35.825Z INFO - Container test6783_0_89c7e566_msiProxy for site austeamtest3 initialized successfully and is ready to serve requests. 2025-01-17T04:51:35.830Z INFO - Initiating warmup request to container austeamtest3_0_89c7e566 for site test6783 2025-01-17T04:51:40.439Z INFO - Container test6783_0_89c7e566 for site test6783 initialized successfully and is ready to serve requests. 2025-01-17T04:51:40.445Z INFO - Initiating warmup request to container austeamtest3_0_89c7e566_middleware for site test6783 2025-01-17T04:51:41.259Z INFO - Container test6783_0_89c7e566_middleware for site austeamtest3 initialized successfully and is ready to serve requests.
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

