Я хочу запустить простое приложение консоли do tnet core в контейнере в интерактивном режиме. Я не могу этого сделать, и контейнер просто запускается, а затем немедленно закрывается, не запуская программу полностью.
Все, что есть в консольном приложении, - это следующие три оператора.
Console.WriteLine("Hello World!");
var readText = Console.ReadLine(); // Wait for me to enter some text
Console.WriteLine(readText);
Последние две строки делают его интерактивным.
Когда я запускаю контейнер, он печатает Привет мир! Но потом сразу выходит, не дожидаясь ввода текста. Зачем? Что мне не хватает?
Мне удалось запустить основное веб-приложение do tnet в контейнере аналогичным образом, и я могу сопоставить порты снаружи и внутри контейнера для успешного просмотра веб-страниц приложение. Но когда дело доходит до консольного приложения, я в тупике.
Думаю, может быть что-то очень простое, чего мне не хватает. Сводит меня с ума
Шаги для воспроизведения, как описано ниже.
- Запустите Vs2019 и создайте новый. net проект основной консоли.
Добавьте пару операторов, чтобы сделать его интерактивным.
Добавить поддержку Docker в созданный проект. Щелкните проект правой кнопкой мыши, «Добавить» -> выберите «Поддержка оркестратора контейнеров»
Теперь Visual Studio создает набор файлов и также изменяет файл csproj.
В PowerShell перейдите в папку с файлом решения. Выполните команду «docker -compose up»
После того, как образы созданы и контейнеры запущены и работают, мы можем увидеть начало, чтобы увидеть проблему.
Мы видим здесь Hello-World !.
Но он не ждет, когда я что-то наберу . Наберите docker ps -a и увидите закрытый контейнер. Когда я пытаюсь запустить это с помощью docker start -i или docker start -a, контейнер запускается, но немедленно закрывается. Что мне делать, чтобы запустить контейнер, чтобы я мог напечатать что-нибудь для моего приложения, работающего в нем? Вы также можете увидеть это на рабочем столе docker. Даже если я запустил их (используя кнопку запуска, доступную в пользовательском интерфейсе рабочего стола docker для каждого контейнера), он просто снова остановится.
Я запускал веб-приложения в контейнерах. При правильном сопоставлении портов веб-приложение, работающее внутри контейнера, может быть доступно извне. Я создал базовое веб-приложение do tnet в аналогичных строках, описанных выше, изменил файл docker -compose, чтобы включить отображение портов (показано ниже), и когда я выполняю docker -compose, приложение запускается и работает . Но с консольным приложением контейнер просто закрывается.