Azure 应用服务容器无法在端口 443 上启动

时间:2021-03-16 09:33:48

标签: c# .net docker

我在 azure 中设置了一个应用服务并使用容器加载。 容器在我的开发电脑上本地运行,没有问题。这在以前有效,但不确定在什么时候失败了。

以下是日志流中的日志。

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

2 个答案:

答案 0 :(得分:1)

根据 Microsoft 文档,您似乎遗漏了几个步骤。 您可以看到您的应用程序从端口 80 开始。

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

强制 HTTPS here

使用 HTTPS here 设置 docker 镜像

答案 1 :(得分:0)

所以问题在于我对 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 的机器上本地测试容器。