Azure 应用服务如何管理与 docker 容器的端口绑定?它能识别Expose吗?
How does Azure App Service manage port binding with docker container? Does it recognize Expose?
我刚刚从 azure cr 部署了一个 docker 图像到 azure 应用程序服务。
docker 映像包含一个 .net 核心 API。这是 docker 文件:
#Running aspnet core 3.1 runtime on ubuntu 20.04
FROM mcr.microsoft.com/dotnet/aspnet:3.1.14-focal
EXPOSE 5000
ENV ASPNETCORE_URLS="http://0.0.0.0:5000"
COPY myapi/bin/Release/netcoreapp3.1/publish/ api/
WORKDIR /api
ENTRYPOINT [ "dotnet", "myapi.dll"]
此 API 正在侦听端口 5000,除了 docker 文件中的 EXPOSE 命令外,我没有以任何方式将此信息提供给 Azure。然而,我可以使用端口 443 从 url azure 给我正确访问 myapi。我很惊讶这能正常工作。
Azure 是否在我的 docker 文件中检测到 EXPOSE 命令?或者是什么让这项工作成功?
我有同样的问题,我在这里找到了答案:
https://docs.microsoft.com/en-us/answers/questions/447302/access-multiple-ports-in-docker-compose-azure-web.html
简而言之,如果您不这样做,Azure 网站会为您完成这项工作
引述:
Azure App Service 仅公开端口 80 和 443。是的,来自客户端的传入请求只会超过 443/80,这应该映射到容器的公开端口。
应用服务将尝试检测要绑定到容器的端口,但您也可以使用 WEBSITES_PORT 应用设置并使用要绑定到容器的端口的值对其进行配置。
我刚刚从 azure cr 部署了一个 docker 图像到 azure 应用程序服务。
docker 映像包含一个 .net 核心 API。这是 docker 文件:
#Running aspnet core 3.1 runtime on ubuntu 20.04
FROM mcr.microsoft.com/dotnet/aspnet:3.1.14-focal
EXPOSE 5000
ENV ASPNETCORE_URLS="http://0.0.0.0:5000"
COPY myapi/bin/Release/netcoreapp3.1/publish/ api/
WORKDIR /api
ENTRYPOINT [ "dotnet", "myapi.dll"]
此 API 正在侦听端口 5000,除了 docker 文件中的 EXPOSE 命令外,我没有以任何方式将此信息提供给 Azure。然而,我可以使用端口 443 从 url azure 给我正确访问 myapi。我很惊讶这能正常工作。
Azure 是否在我的 docker 文件中检测到 EXPOSE 命令?或者是什么让这项工作成功?
我有同样的问题,我在这里找到了答案: https://docs.microsoft.com/en-us/answers/questions/447302/access-multiple-ports-in-docker-compose-azure-web.html
简而言之,如果您不这样做,Azure 网站会为您完成这项工作
引述: Azure App Service 仅公开端口 80 和 443。是的,来自客户端的传入请求只会超过 443/80,这应该映射到容器的公开端口。 应用服务将尝试检测要绑定到容器的端口,但您也可以使用 WEBSITES_PORT 应用设置并使用要绑定到容器的端口的值对其进行配置。