Запуск стандартного консольного приложения .NET в Docker-контейнере. - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь запустить очень простое консольное приложение в качестве контейнера Windows Docker.У меня есть файл 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"

Консольное приложение просто выводит «Hello World» в файл журнала каждый5 секунд "

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 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 ",Контейнер создается, а затем сразу же умирает. Я ожидаю, что контейнер должен оставаться активным, учитывая, что приложение вызывается в точке входа, и приложение должно просто продолжать работать, если не будет остановлено вручную.

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Ваш контейнер умер, скорее всего, из-за исключительной ситуации, когда ваш ENTRYPOINT или ENTRYPOINT недействителен.Вы можете проверить docker logs, чтобы выяснить причину.

0 голосов
/ 27 июня 2019

В конце концов, исправлением было изменение ENTRYPOINT на CMD в файле Docker. Смотри ниже.

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

Я позволил этому работать на ночь, и контейнер теперь работает 15 часов.

...