运行 docker 容器中的标准 .NET 控制台应用程序
Running a standard .NET Console Application in docker container
我正在尝试 运行 一个非常简单的控制台应用程序作为 windows docker 容器。我有一个使用 "dotnet-framework:4.7.2-runtime-windowsservercore-1803" 基本图像显示的 docker 文件。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT "DockerConsoleApp.exe"
控制台应用程序每 5 秒将 "Hello World" 输出到日志文件中
static void Main(string[] args)
{
while (true)
{
try
{
Thread.Sleep(5000);
_logger.Info("Hello Wolrd");
}
catch (Exception e)
{
//handle the exception
Console.Error.WriteLine(e);
}
}
}
我正在使用以下 docker 撰写文件
version: '3.4'
services:
dockerconsoleapp:
image: dockerconsoleapp:dev
build:
context: .\
args:
source: obj\Docker\publish
volumes:
- C:\Users\user\source\repos\DockerConsoleApp\DockerConsoleApp:C:\app
- C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Remote Debugger:C:\remote_debugger:ro
- C:\Users\user\source\repos\DockerConsoleApp\VolumeTest:C:\app\logs
问题是,一旦我手动构建或 运行 "docker-compose up -d" 容器被创建,然后立即死亡。我希望容器应该保持运行,因为应用程序正在入口点调用,并且应用程序应该继续运行,除非手动停止。
您的容器很可能因 ENTRYPOINT
中的异常或 ENTRYPOINT
本身无效而终止。您可以检查 docker logs
找出原因。
最后,修复是将 ENTRYPOINT 更改为 dockerfile 中的 CMD。见下文。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
CMD ["DockerConsoleApp.exe"]
我已经让这个 运行 过夜了,现在容器已经运行了 15 个小时。
我正在尝试 运行 一个非常简单的控制台应用程序作为 windows docker 容器。我有一个使用 "dotnet-framework:4.7.2-runtime-windowsservercore-1803" 基本图像显示的 docker 文件。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT "DockerConsoleApp.exe"
控制台应用程序每 5 秒将 "Hello World" 输出到日志文件中
static void Main(string[] args)
{
while (true)
{
try
{
Thread.Sleep(5000);
_logger.Info("Hello Wolrd");
}
catch (Exception e)
{
//handle the exception
Console.Error.WriteLine(e);
}
}
}
我正在使用以下 docker 撰写文件
version: '3.4'
services:
dockerconsoleapp:
image: dockerconsoleapp:dev
build:
context: .\
args:
source: obj\Docker\publish
volumes:
- C:\Users\user\source\repos\DockerConsoleApp\DockerConsoleApp:C:\app
- C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Remote Debugger:C:\remote_debugger:ro
- C:\Users\user\source\repos\DockerConsoleApp\VolumeTest:C:\app\logs
问题是,一旦我手动构建或 运行 "docker-compose up -d" 容器被创建,然后立即死亡。我希望容器应该保持运行,因为应用程序正在入口点调用,并且应用程序应该继续运行,除非手动停止。
您的容器很可能因 ENTRYPOINT
中的异常或 ENTRYPOINT
本身无效而终止。您可以检查 docker logs
找出原因。
最后,修复是将 ENTRYPOINT 更改为 dockerfile 中的 CMD。见下文。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
CMD ["DockerConsoleApp.exe"]
我已经让这个 运行 过夜了,现在容器已经运行了 15 个小时。