为什么以下docker-compose执行退出而无需等待用户输入?

时间:2019-05-29 02:00:08

标签: node.js docker docker-compose

当我使用Docker运行以下简单的Node.js代码(index.js)时,该代码将按预期执行-等待用户输入。但是,当我使用Docker-Compose运行相同的代码时,Node.js会在等待用户输入之前退出。

我已经能够使用Dockerfile运行Node应用程序,但是不能使用Docker-Compose

这是我可以在Dockerfile中运行的index.js文件(但不能在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
$ 

0 个答案:

没有答案