簡體   English   中英

在Docker容器中運行標准.NET控制台應用程序

[英]Running a standard .NET Console Application in docker container

我試圖將一個非常簡單的控制台應用程序作為Windows docker容器運行。 我有一個使用“ dotnet-framework:4.7.2-runtime-windowsservercore-1803”基礎映像顯示的泊塢窗文件。

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 compose文件

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”,就會創建容器,然后立即死亡。 我希望容器可以保持打開狀態,因為在入口點中正在調用應用程序,除非手動停止,否則應用程序應該繼續運行。

您的容器很可能是由於ENTRYPOINT異常或ENTRYPOINT本身無效而導致的死亡。 您可以檢查docker logs以找出原因。

最后,解決方法是將dockerfile中的ENTRYPOINT更改為CMD。 見下文。

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

我已經讓它運行了一整夜,現在容器可以用15個小時了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM