Когда я запускаю следующий простой код 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
$