Docker 已停靠的ASP.NET核心网站在运行/启动后立即退出,退出代码为0?

Docker 已停靠的ASP.NET核心网站在运行/启动后立即退出,退出代码为0?,docker,asp.net-core,Docker,Asp.net Core,我部署了几个ASP.NET核心网站,从未遇到过如此奇怪的问题。我没有返回任何错误,除了容器刚刚停止之外,没有任何错误迹象 该命令看起来很简单,如下所示: >> docker run -it ... >> ... 下一个>片刻后返回,没有错误迹象。当我用docker ps-a检查正在运行的容器的状态时,我可以看到我刚刚启动的容器立即退出退出(0)。我在网上发现的一些问题也是关于立即退出的,但涉及到控制台应用程序(没有console.ReadLine阻止代码退出)。在这里,

我部署了几个ASP.NET核心网站,从未遇到过如此奇怪的问题。我没有返回任何错误,除了容器刚刚停止之外,没有任何错误迹象

该命令看起来很简单,如下所示:

>> docker run -it ...
>> ...
下一个
>
片刻后返回,没有错误迹象。当我用
docker ps-a
检查正在运行的容器的状态时,我可以看到我刚刚启动的容器立即退出
退出(0)
。我在网上发现的一些问题也是关于立即退出的,但涉及到控制台应用程序(没有
console.ReadLine
阻止代码退出)。在这里,我甚至使用了标志
-it
来保持终端的交互

你能给我一些诊断的建议吗?我肯定出了什么问题,但如果真的没有任何错误报告,我只是盲目和卡住了。除非出现错误,否则ASP.NET核心网站不应该像这样退出。但是在这种情况下,应该正确返回/报告错误吗

更新

在尝试使用
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"]

您正在尝试使用“-it”启动/运行容器,这是一种交互式终端模式。在这种模式下,您要启动什么?您要启动cmd/bash终端吗?你能分享你正在使用的基本图像吗?您是否在Dockerfile中使用入口点?尝试将其更改为CMD。请共享Dockerfile,我可以更好地理解您的问题。@Ashik请查看我上次的更新部分,谢谢您的时间。我找不到您使用的基本图像。最新的dotnet核心映像(包括sdk和aspnet运行时)位于此处:[microsoft dotnet核心]()。我在一个分叉的aspnet核心示例中创建了一个Dockerfile,并在github中添加了以下内容:。它使用与您类似的Dockerfile,请参阅我使用的是CMD而不是ENTRYPOINT,它允许我在使用
docker run
docker exec
@Ashik时使用-It感谢您的关心。我的项目目标是
.NET Core 2.2
,为我生成的
Dockerfile
具有
microsoft/dotnet:2.1-aspnetcore-runtime
,这真的很奇怪(因为这里需要的运行时是2.2)。所以我自己尝试了一下,用
2.2
替换
2.1
,它就可以工作了(正常)。虽然很奇怪,我在
hub.docker.com
上也找不到这样的图片???为什么呢?这也是我关心的。无论如何,
microsoft/dotnet:2.2-aspnetcore-runtime
确实存在。关于
CMD
我不太确定它是否有助于注销某些内容,因为我已经找到了…原因。实际上,我的web应用程序没有配置为注销到控制台(仅登录到文件)。在将其配置为登录到控制台之后,我可以看到写入控制台的所有错误/警告/信息(ENTRYPOINT保持不变,当然,
-它始终是必需的)。