Aid*_*wen 7 node.js docker docker-compose
我正在尝试使用docker-compose运行节点容器 -
services:
node:
build:
context: nodejs/
ports:
- "3000:3000"
volumes:
- ../nodejs:/usr/src/app
working_dir: '/usr/src/app'
Run Code Online (Sandbox Code Playgroud)
我的码头文件
FROM node:6.10
EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)
问题是它立即退出 -
$ docker-compose up
Starting docker_node_1
Attaching to docker_node_1
docker_node_1 exited with code 0
Run Code Online (Sandbox Code Playgroud)
日志中docker logs docker_node_1没有任何内容- 什么都不返回.
有一个引用主脚本的package.json -
{
...
"main": "server.js",
...
}
Run Code Online (Sandbox Code Playgroud)
我的主要脚本只是一个简单的快递服务器 -
const express = require('express');
const app = express();
const port = 3000;
app.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err);
}
console.log(`server is listening on ${port}`);
});
Run Code Online (Sandbox Code Playgroud)
我想我错过了一些明显的东西,但我看不出它是什么......
你没有指定你的码头工人command.这是代表container以下几个关键过程的关键概念(过程=命令,你的程序)
你可以在Dockerfile中做到这一点:
CMD npm start
Run Code Online (Sandbox Code Playgroud)
或者在docker-compose.yml中:
services:
node:
command: npm start
build:
context: nodejs/
ports:
- "3000:3000"
volumes:
- ../nodejs:/usr/src/app
working_dir: '/usr/src/app'
Run Code Online (Sandbox Code Playgroud)
两种方法都是等价的.但是根据需要编辑它(npm run,npm run build等)