簡體   English   中英

Azure 應用服務容器無法在端口 443 上啟動

[英]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"]

根據 Microsoft 文檔,您似乎缺少一些步驟。 您可以看到您的應用程序從端口 80 開始。

2021-03-16T09:14:56.794289922Z       Now listening on: http://[::]:80

在此處執行 HTTPS

在此處使用 HTTPS 設置 docker 映像

所以問題是我對 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM