繁体   English   中英

无法访问在 docker 中运行的 webapp

[英]cannot access webapp running in docker

我遵循了有关使用 Docker 创建网络应用程序的教程 我的 dockerfile 暴露了 5000 端口:

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 5000
#EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR .
COPY ["CustomerApi/CustomerApi.csproj", "CustomerApi/"]
COPY ["CustomerApi.Domain/CustomerApi.Domain.csproj", "CustomerApi.Domain/"]
COPY ["CustomerApi.Service/CustomerApi.Service.csproj", "CustomerApi.Service/"]
COPY ["CustomerApi.Data/CustomerApi.Data.csproj", "CustomerApi.Data/"]
RUN dotnet restore "CustomerApi/CustomerApi.csproj"
COPY . .
WORKDIR "./CustomerApi"
RUN dotnet build "CustomerApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "CustomerApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CustomerApi.dll"]

当我使用本地运行图像时

docker run myrepo/demo:latest -p 5000:5000 -p 5001:5001 -e ASPNETCORE_HTTP_PORT=https://+:5001 -e ASPNETCORE_URLS=http://+:5000

并在https://localhost:5000上打开我的浏览器,我得到ERR_EMPTY_RESPONSE (我不确定为什么我的 docker docker run -command 中需要5001 ,因为它没有在我的 dockerfile 中公开)。

当我检查 docker 桌面中的图像时,我看到:

在此处输入图像描述

特别是它显示ASPNETCORE_URLS=http://+80 ,尽管我使用-e ASPENTCORE_URLS=https://5000覆盖了上面的内容。

docker run的选项分为两部分:

  • 图像名称前的选项是 docker 选项
  • 图像名称后的选项覆盖任何 CMD 并发送到容器

所以你的命令应该是这样的

docker run -p 5000:5000 -p 5001:5001 -e ASPNETCORE_HTTP_PORT=https://+:5001 -e ASPNETCORE_URLS=http://+:5000 myrepo/demo:latest

EXPOSE 实际上并没有任何事情。 它主要是关于您认为容器使用哪些端口的文档。 它可能是错误的,如果它是错误的,您不会收到任何错误或警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM