提问者:小点点

C#-没有调试模式,默认工作进程不会在docker中启动


也许这是显而易见的事情,但无法弄清楚。

我刚刚在Visual Studio(2022,.NET 6).Docker支持开启。当我按调试-它启动docker容器和运行应用程序。控制台上的一切看起来都很好(默认情况下,它只是每1秒写一条消息。)

现在如果我离开VS,打开CMD并键入:

docker ps

我将看到在VisualStudio运行时创建的图像。如果我尝试通过以下方式开始:

docker run workerservicedocker:dev

我得到快速输出像:

所以实际上没有代码执行。看起来像应用程序正在立即打开/关闭。我只是在尝试码头工人的方法,所以也许我错过了一些明显的东西。正如我提到的,这只是默认的模板解决方案,没有从我这边修改。提前感谢您的关注。

Dockerfile是:

FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base

WORKDIR/app

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WorkerServiceDocker/WorkerServiceDocker.csproj", "WorkerServiceDocker/"]
RUN dotnet restore "WorkerServiceDocker/WorkerServiceDocker.csproj"
COPY . .
WORKDIR "/src/WorkerServiceDocker"
RUN dotnet build "WorkerServiceDocker.csproj" -c Release -o /app/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WorkerServiceDocker.dll"]

这是VS创建的默认Dockerfile。

更新:

如果我这样做

docker run -it  workerservicedocker:dev

正如下面的回复中所建议的,它只是显示了应用程序


共1个答案

匿名用户

docker-run-it-workerservicedocker:dev连接标准数据和一个psuedo-tty

基本上,你运行它的方式是在“后台”。如果您docker ps,您将看到您的容器正在运行。抓取容器id,docker日志

通过-它可以有效地将容器连接到控制台。当你从VS跑步时,它会帮你做到这一点。