我已经部署了多个ASP.NET Core网站,但从未遇到过如此奇怪的问题。我没有返回任何错误,没有错误的迹象,只是容器刚刚停止。
该命令看起来很简单:
>> docker run -it ...
>> ...
片刻之后返回的下一个>>
,没有错误迹象。当我使用docker ps -a
检查正在运行的容器的状态时,我可以看到刚开始的容器立即退出了Exited (0)
。我在网上也发现了一些有关立即退出的问题,但是涉及控制台应用程序(没有Console.ReadLine
可以阻止代码退出)。在这里,我什至使用标志-it
来保持终端的交互性。
您能给我一些诊断建议吗?我确定出了点问题,但实际上,如果没有报告任何错误,那我就蒙蔽了双眼。除非有任何错误,否则没有理由导致ASP.NET Core网站那样退出。但是在那种情况下,错误应该被正确地返回/报告吗?
更新:
尝试使用Docker
进行调试后,我发现实际上存在一些与SQL连接有关的错误(从容器内部到外部主机)。解决所有这些错误确实会使容器正常运行而不会过早退出。因此,现在的问题是为什么退出代码可能为0?这根本没有意义,甚至也没有报告错误。那怎么可能?我可以在我的应用程序代码或docker配置中做错什么吗?
更新
dockerfile内容:
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["My.Web/My.Web.csproj", "My.Web/"]
RUN dotnet restore "My.Web/My.Web.csproj"
COPY . .
WORKDIR "/src/My.Web"
RUN dotnet build "My.Web.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "My.Web.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "My.Web.dll"]