当我使用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
$