【发布时间】:2022-01-14 09:20:42
【问题描述】:
也许这是显而易见的事情,但无法弄清楚。
我刚刚在 Visual Studio(2022,.NET 6)中有开箱即用的 C# Worker 服务解决方案。 Docker 支持已开启。当我按“调试”时 - 它会启动 docker 容器并运行 app。控制台上的一切看起来都很好(默认情况下它只是每 1 秒写入一次消息。)
现在,如果我离开 VS 并打开 CMD 并输入:
docker ps
我会看到在 Visual Studio 运行时创建的图像。如果我尝试通过以下方式启动它:
docker run workerservicedocker:dev
我得到快速输出,例如:
所以实际上没有代码执行发生。看起来应用程序正在立即打开/关闭。我只是在尝试 Docker 方法,所以也许我遗漏了一些明显的东西。正如我所提到的,它只是默认模板解决方案,我没有进行任何修改。 提前感谢您查看。
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
就像下面的回复中建议的那样 - 它只显示 app> 命令行,但没有实际执行。
【问题讨论】:
-
你能发布 Dockerfile 吗?
-
刚刚添加了它的内容
-
让我感到奇怪的是,您创建了一个 Linux 映像(
mcr.microsoft.com/dotnet/runtime:6.0是 Linux),但是当您运行它时,它会显示“Microsoft Windows ...”文本,就像Windows 图片。
标签: c# .net docker .net-core containers