docker - 运行.net核心应用程序时如何在docker中进行端口映射?

标签 docker asp.net-core

网络核心项目。我已成功构建该项目。下面是我的 dockerfile。

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 4040
EXPOSE 5050

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["MWS.AspNetCoreApis/MWS.AspNetCoreApis.csproj", "MWS.AspNetCoreApis/"]
RUN dotnet restore "MWS.AspNetCoreApis/MWS.AspNetCoreApis.csproj"
COPY . .
WORKDIR "/src/MWS.AspNetCoreApis"
RUN dotnet build "MWS.AspNetCoreApis.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
CMD tail -f /dev/null
ENTRYPOINT ["dotnet", "MWS.AspNetCoreApis.dll"]

我将我的应用程序构建为 docker build -t locationservices .我在这里建立我的形象。然后当我使用 docker run -d locationservices 运行我的图像时它给出了一些长 ID。当我尝试点击 http://localhost:40/swagger/index.htmlhttp://localhost:5050/swagger/index.html我的网页打不开。
当我运行 >docker run -it locationservices 时,我收到以下消息。

Hosting environment: Production Content root path: /app Now listening on: http://[::]:80 Application started. Press Ctrl+C to shut down.



但是我无法使用以下任何网址访问我的应用程序
http://localhost:5050/swagger/index.html
http://localhost:4040/swagger/index.html
http://localhost:80/swagger/index.html

有人可以帮我找出问题所在。任何帮助,将不胜感激。谢谢

最佳答案

这个问题我有点晚了。
但实际问题是您告诉 docker 要公开哪些端口,但它们与 ASP.NET Core 正在监听的端口不匹配。
您需要向 Dockerfile 添加一个与您公开的端口相匹配的环境变量,如下所示。

EXPOSE 4040
ENV ASPNETCORE_URLS=http://*:4040
文件的最后一行:
ENTRYPOINT ["dotnet", "myapp.dll"]
然后使用 运行容器-p 4040:4040 这样它将端口映射到“外部”世界。

关于docker - 运行.net核心应用程序时如何在docker中进行端口映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453879/

相关文章:

java - UseContainerSupport VM 参数有什么作用?

docker - 无法使用docker镜像在gitlab-ci中编译golang项目

linux - 无法附加到运行 Docker 容器的 bash

c# - 如何使用 ADB2C 实现身份验证端点

c# - 找不到类型或命名空间名称 'DefaultHttpRequest'

c# - Azure 聊天机器人中间件的依赖注入(inject)?

asp.net-core - 如何使用 Blazor 语法折叠/展开 Razor 组件?

docker 7 : Could not find matching IP for MAC address error

node.js - Docker Node alpine 8 段错误(核心已转储)

c# - 带有 MongoDb 的 ASP.NET Core 3.1 中的身份服务器 4