Nir*_*jan 14 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"]
Run Code Online (Sandbox Code Playgroud)
我构建我的应用程序,如下docker build -t locationservices .
所示,我构建我的图像。然后,当我使用它运行我的图像时,docker run -d locationservices
它会给出一些长 ID。当我尝试点击http://localhost:40/swagger/index.html或http://localhost:5050/swagger/index.html我的网页无法打开。当我运行 >docker run -it locationservices 时,我收到以下消息。
托管环境:生产内容根路径:/app 现在监听:http://[::]:80应用程序已启动。按 Ctrl+C 关闭。
但我无法使用以下任何网址访问我的应用程序
http://localhost:5050/swagger/index.html
http://localhost:4040/swagger/index.html
http://localhost:80/swagger/index.html
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?任何帮助,将不胜感激。谢谢
Dar*_*ekt 21
我问这个问题有点晚了。
但实际的问题是,您告诉 docker 要公开哪些端口,但它们与 ASP.NET Core 正在侦听的端口不匹配。
您需要将一个环境变量添加到与您公开的端口相匹配的 Dockerfile 中,如下所示。
EXPOSE 4040
ENV ASPNETCORE_URLS=http://*:4040
Run Code Online (Sandbox Code Playgroud)
文件的最后一行:
ENTRYPOINT ["dotnet", "myapp.dll"]
Run Code Online (Sandbox Code Playgroud)
然后使用-p 4040:4040运行容器,这样它将端口映射到“外部”世界。
在容器内部,应用程序绑定到端口 80 上的本地主机。但是,这是在容器内部。当您尝试点击 时http://localhost
,localhost
在该上下文中的是您的计算机,而不是容器实例。您需要通过 LAN 上的 IP(而不是localhost
.
归档时间: |
|
查看次数: |
20145 次 |
最近记录: |