Я пытаюсь включить один из индикаторов выполнения терминала npm, чтобы лучше визуализировать, как продвигается длительный процесс. Когда я запускаю его из стандартного «node index.js», он запускается без сбоев, но при запуске из простого образа докера ничего не отправляется в терминал. Мой index.js читается так:
const _cliProgress = require('cli-progress');
// create a new progress bar instance and use shades_classic theme
const bar1 = new _cliProgress.Bar({}, _cliProgress.Presets.shades_classic);
// start the progress bar with a total value of 200 and start value of 0
bar1.start(200, 0);
// update the current value in your application..
bar1.update(100);
// stop the progress bar
bar1.stop();
А это мой докер-файл:
FROM node:latest
#create work directory
RUN mkdir -p /src
#establish the app folder as the work directory
WORKDIR /src
COPY package.json /src
COPY package-lock.json /src
RUN npm i
COPY . /src
CMD [ "node", "index.js" ]
Терминал ничего не отображает из этих пакетов, но отображает обычный console.infos. Эта проблема существует и для другого пакета, который я пытался использовать.
Мы будем очень благодарны за любую информацию о том, почему это отличается от ожидаемого результата. Спасибо.





Вам нужно запустить докер с флагом --tty , -t, который будет выделять псевдо-TTY
docker run -t --rm test
Вы можете проверить следующие вопросы, чтобы получить более подробное объяснение этого флага:
Смущает опция Docker -t для выделения псевдо-TTY
Что значит подключить tty / std-in-out к докерам или lxc?
Еще один вопрос, если у вас есть время, если я запустил это внутри роя docker-compose (?), То каков был бы процесс его репликации. Будет ли это "tty: true" внутри yml-узла изображения?
Да, эквивалент на docker-compose.yml будет tty: true
Большое спасибо! Работает как шарм.