首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在停靠容器中运行标准.NET控制台应用程序

在停靠容器中运行标准.NET控制台应用程序
EN

Stack Overflow用户
提问于 2019-06-26 21:28:17
回答 2查看 4.8K关注 0票数 1

我正在尝试运行一个非常简单的控制台应用程序作为一个windows docker容器。我有一个如下所示的docker文件,使用的是"dotnet-framework:4.7.2-runtime-windowsservercore-1803“基础图像。

代码语言:javascript
复制
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“输出到日志文件。

代码语言:javascript
复制
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组合文件

代码语言:javascript
复制
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 Studio\2019\Professional\Common7\IDE\Remote Debugger:C:\remote_debugger:ro
      - C:\Users\user\source\repos\DockerConsoleApp\VolumeTest:C:\app\logs

问题是,只要我手动构建或运行"docker-compose up -d“,容器就会创建,然后立即消亡。考虑到应用程序是在入口点调用的,我认为容器应该保持正常运行,并且应用程序应该继续运行,除非手动停止。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 22:18:50

您的容器很可能是由于ENTRYPOINT中的异常或ENTRYPOINT本身无效而死的。您可以检查docker logs以找出原因。

票数 1
EN

Stack Overflow用户

发布于 2019-06-27 15:51:48

最后,修复方法是将dockerfile中的入口点更改为CMD。见下文。

代码语言:javascript
复制
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
CMD ["DockerConsoleApp.exe"]

我让它运行了一夜,现在容器已经运行了15个小时。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56774005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档