Почему следующее выполнение docker-compose завершается без ожидания ввода пользователя? - PullRequest
1 голос
/ 29 мая 2019

Когда я запускаю следующий простой код Node.js (index.js), используя Docker, код выполняется как ожидалось - ожидая ввода данных пользователем. Но когда я запускаю тот же код с помощью Docker-Compose, Node.js завершается, прежде чем ждать ввода пользователя.

Мне удалось запустить приложение Node, используя Dockerfile, но не Docker-Compose

Вот файл index.js, который я могу запустить в Dockerfile (но не в Docker-Compose):

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});

readline.question(`What's your name? `, (name) => {
  console.log(`Hi ${name}!`)
  readline.close()
});

И Dockerfile, который я использовал:

FROM node:12.2

ENV NODE_ENV=development
ENV NPM_CONFIG_LOGLEVEL warn

WORKDIR /app
COPY package*.json /app/
RUN npm install && npm cache clean --force

WORKDIR /app/src
CMD ["node", "index.js"]


As with the Dockerfile experience:

```shell
$ docker build -t commandline .
...
$ docker run -it --rm -v $(pwd)/src:/app/src commandline
What's your name? Scott
Hi Scott!

Я ожидал, что версия Docker-Compose будет выполняться точно так же, но она выходит из процесса Node и Docker, прежде чем пользователь сможет ответить:

$ docker-compose up
Creating mega_node_1 ... done
Attaching to mega_node_1
node_1  | What's your name? mega_node_1 exited with code 0
$ 
...