Контейнер Docker с консольным приложением вставляет команды - PullRequest
0 голосов
/ 12 января 2019

У меня есть Dockerfile, который создает образ, содержащий пользовательское консольное приложение:

FROM ubuntu:bionic

# Some non-relevant steps...

CMD  bin/my-console-app

my-console-app - это простое консольное приложение, которое, хотя оно и работает, обычно дает вам возможность вставлять команды.

Например

./my-console-app
my-console> some-command
Some result
my-console> some-other-command
Some other result

если я запускаю созданный мной контейнер с помощью вышеуказанного Dockerfile, используя -d, все в порядке:

docker run --name my-app --network host -d myapp

используя сеть Я вижу, что консольное приложение работает правильно.

Однако, если я запускаю его без -d, например:

docker run --name my-app --network host myapp

тогда мой терминал сойдет с ума, как будто кто-то постоянно нажимает ENTER:

my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console>
...

и это продолжается вечно. Я не могу вставить команду в консольное приложение.

Почему это происходит? Что я должен сделать, чтобы предотвратить это?

1 Ответ

0 голосов
/ 12 января 2019

Я решил свою проблему, передав -it команде docker run.

Итак, теперь я запускаю свой контейнер, используя:

docker run --name my-app --network host -it myapp

РЕДАКТИРОВАТЬ : при использовании docker-compose для решения этой проблемы укажите эти 2 параметра для службы:

stdin_open: true
tty: true

спасибо @ user268396

...