【发布时间】:2021-09-16 09:26:25
【问题描述】:
我需要容器化一个在 Windows IIS 服务器上运行良好的 .net 5.0 Web 应用程序。我在docker文件下面写了。我可以使用 docker 文件构建映像,但是当我尝试访问它时。我收到无法访问此站点的错误消息。请帮帮我。 docker 新手和 linux 新手。
Docker 文件:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS="http://*:5000"
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["API/WebUI/Summit.API.csproj", "API/WebUI/"]
COPY ["Application/Summit.Application.csproj", "Application/"]
COPY ["Domain/Shared/Summit.Domain.csproj", "Domain/Shared/"]
COPY ["Domain/SqlKata.Execution/SqlKata.Execution.csproj", "Domain/SqlKata.Execution/"]
COPY ["Domain/QueryBuilder/QueryBuilder.csproj", "Domain/QueryBuilder/"]
COPY ["Infrastructure/Summit.Infrastructure.csproj", "Infrastructure/"]
RUN dotnet restore "API/WebUI/Summit.API.csproj"
COPY . .
WORKDIR "/src/API/WebUI"
RUN dotnet build "Summit.API.csproj" -c Release
FROM build AS publish
RUN dotnet publish "Summit.API.csproj" -c Release
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY --from=publish /src/API/WebUI/bin/Release/net5.0/publish .
EXPOSE 5000
ENTRYPOINT ["dotnet", "Summit.API.dll"]
我会使用命令 docker container run -itd -p 8000:5000 imageid 从 docker 文件手动构建映像
发布当我尝试访问 http://localhost:5000/swagger 时无法访问它。
请帮帮我。
【问题讨论】:
-
我认为
-p 8000:5000在本地主机上的端口 8000 上的容器中发布端口 5000,这意味着您需要http://localhost:8000/swagger。我认为您希望--publish而不是-p 8000:5000使用 EXPOSE 指令并按原样发布端口 5000。 -
我需要做什么改变,有什么建议。
-
如果您想在端口 5000 上发布此内容,请在运行命令中使用
--publish或-p 5000:5000而不是-p 8000:5000。 -
嗨 @Rup 我试过但无法访问 localhost:5000/swagger/index.html 我正在尝试从运行容器的同一 ubuntu 服务器访问它。
-
但是,当我检查有关端口号的过程时,我可以在下面看到 docker-pr 357104 root 4u IPv4 2096378 0t0 TCP *:5000 (LISTEN) docker-pr 357108 root 4u IPv6 2096395 0t0 TCP * :5000 (听)