如何修复停靠.Net API时的端口错误



我正在尝试对我的.Net API进行dockerize,在用它创建容器后,我似乎无法访问它;插座挂断";错误我相信这与我使用的端口有关,尽管我不知道如何修复它。以下是我可以收集的所有信息。

Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /app
COPY WebAPI.csproj .
RUN dotnet restore "WebAPI.csproj"
COPY . ./
RUN dotnet publish "WebAPI.csproj" -c Release -o /publish
RUN dotnet build
FROM build AS final
WORKDIR /app
COPY --from=build /publish .
EXPOSE 5000
ENTRYPOINT ["dotnet", "WebAPI.dll"]

命令:

docker build -t webapi:latest .    
docker run -p 5000:5000 webapi:latest

邮差代理:

127.0.0.1:5000

p.S我尝试过用多种方式更改端口,更改邮递员的代理设置,但似乎什么都不起作用

Microsoft已在aspnet映像中将环境变量ASPNETCORE_URLS设置为http://+:80/,这将使您的应用程序侦听端口80。

所以你的运行命令应该像这个一样映射端口80

docker run -p 5000:80 webapi:latest

然后您的API将在http://localhost:5000/

请注意,Swagger仅在应用程序以开发模式运行并且Docker环境不被视为开发时可用。因此,默认情况下,Swagger将不可用。

更新:由于我没有您的程序源代码,我创建了以下运行dotnet new的Dockerfile来创建一个新的模板webapi项目。

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
RUN dotnet new webapi -n WebAPI -o .
RUN dotnet publish -c Release -o /publish
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /publish .
CMD ["dotnet", "WebAPI.dll"]

然后,我运行以下命令来构建、运行和测试容器

docker build -t test .
docker run --rm -d -p 5000:80 test
curl http://localhost:5000/WeatherForecast

我从API中得到了预期的结果。

相关内容

  • 没有找到相关文章

最新更新