[英]Azure app service container failing to start on port 443
我在 azure 中有一個應用服務設置,並使用容器加載。 該容器在我的開發 PC 上本地運行,沒有問題。 這以前有效,不確定在什么時候失敗。
以下是日志 stream 中的日志。
2021-03-15T23:58:30.009Z INFO - docker run -d -p 4040:443 --name <hidden> -e WEBSITE_SITE_NAME=<hidden> -e WEBSITE_AUTH_ENABLED=False -e PORT=443 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<hidden>.azurewebsites.net -e WEBSITE_INSTANCE_ID=7d541a8f0aa7702237eea8e36b3c0321166514fdfef681b7755b6e82339b42dd -e HTTP_LOGGING_ENABLED=1 <hidden>.azurecr.io/tests/api:20210310.4
2021-03-15T23:58:31.444Z INFO - Initiating warmup request to container <hidden> for site test-app-svc
2021-03-15T23:58:31.450Z INFO - Container <hidden> for site <hidden> initialized successfully and is ready to serve requests.
2021-03-15T23:58:31.452Z INFO - Initiating warmup request to container <hidden> for site <hidden>
2021-03-15T23:58:48.930Z INFO - Waiting for response to warmup request for container <hidden>. Elapsed time = 17.4856219 sec
2021-03-15T23:59:09.988Z INFO - Waiting for response to warmup request for container <hidden>. Elapsed time = 38.5439589 sec
2021-03-15T23:59:25.081Z INFO - Waiting for response to warmup request for container <hidden>. Elapsed time = 53.6371028 sec
2021-03-15T23:59:40.170Z INFO - Waiting for response to warmup request for container <hidden>. Elapsed time = 68.7254333 sec
2021-03-15T23:59:55.261Z INFO - Waiting for response to warmup request for container <hidden>. Elapsed time = 83.8165802 sec
/home/LogFiles/2021_03_15_pl0sdlwk00000D_msi_docker.log (https://<hidden>.scm.azurewebsites.net/api/vfs/LogFiles/2021_03_15_pl0sdlwk00000D_msi_docker.log)
/home/LogFiles/2021_03_16_pl0sdlwk00000D_default_docker.log (https://<hidden>.scm.azurewebsites.net/api/vfs/LogFiles/2021_03_16_pl0sdlwk00000D_default_docker.log)
2021-03-16T09:14:56.794224723Z [40m[32minfo[39m[22m[49m: Microsoft.Hosting.Lifetime[0]
2021-03-16T09:14:56.794289922Z Now listening on: http://[::]:80
2021-03-16T09:14:56.797213505Z [40m[32minfo[39m[22m[49m: Microsoft.Hosting.Lifetime[0]
2021-03-16T09:14:56.797234705Z Application started. Press Ctrl+C to shut down.
2021-03-16T09:14:56.797388904Z [40m[32minfo[39m[22m[49m: Microsoft.Hosting.Lifetime[0]
2021-03-16T09:14:56.797402504Z Hosting environment: Production
2021-03-16T09:14:56.797539103Z [40m[32minfo[39m[22m[49m: Microsoft.Hosting.Lifetime[0]
2021-03-16T09:14:56.797551903Z Content root path: /App
我的 docker 文件正確暴露了端口 443
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
COPY app/publish/<hidden>/ App/
WORKDIR /App
RUN ls -la
EXPOSE 443
ENTRYPOINT ["dotnet", "<hidden>.dll"]
所以問題是我對 Azure 以及它如何與容器通信的理解。
Azure 要求您在容器上公開端口 80 而不是 443。Azure 將在端口 80 上與您的容器內部通信,而不是 443。
Azure 將默認接受 80 和 443 上的連接,並在內部將它們轉發到端口 80。
因此,一旦我將 dockerfile 更改為這樣,那么它在 80 和 443 上都可以正常工作。
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
COPY app/publish/<hidden>/ App/
WORKDIR /App
RUN ls -la
EXPOSE 80
ENTRYPOINT ["dotnet", "<hidden>.dll"]
您也可以在 docker 文件中公開端口 443,但 azure 不會使用它。 這將允許您在 443 上的機器上本地測試容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.