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

时间:2017-05-31 15:12:29

标签: 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'

我的泊坞文件

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

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

1 个答案:

答案 0 :(得分:6)

您未指定泊坞窗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 run,npm run build等)