为什么我的docker节点容器退出

我试图用docker-compose运行节点容器 –

services: node: build: context: nodejs/ ports: - "3000:3000" volumes: - ../nodejs:/usr/src/app working_dir: '/usr/src/app' 

我的docker文件

 FROM node:6.10 EXPOSE 3000 

问题是它立即退出 –

 $ docker-compose up Starting docker_node_1 Attaching to docker_node_1 docker_node_1 exited with code 0 

日志中没有任何东西 – docker logs docker_node_1什么也没有返回。

有一个package.json引用主脚本 –

 { ... "main": "server.js", ... } 

而我的主要脚本只是一个简单的快递服务器 –

 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}`); }); 

我想我错过了一些明显的东西,但是我看不到它是什么…

你没有指定你的docker command 。 这是代表container的关键概念:某种孤立的过程(过程=命令,程序)

你可以在Dockerfile中做到这一点:

 CMD npm start 

或者在docker-compose.yml中:

 services: node: command: npm start build: context: nodejs/ ports: - "3000:3000" volumes: - ../nodejs:/usr/src/app working_dir: '/usr/src/app' 

两种方法都是相同的。 但编辑它作为您的需要(npm运行,npm运行构build等)