2017-05-31 63 views
2

我试图运行与码头工人,撰写一个节点集装箱码头工人节点容器 -为什么我的退出

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", 
    ... 
} 

我的主脚本只是一个简单的Express服务器 -

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

你没有指定你的码头command。这是代表container的关键概念:某种独立的进程中(进程=命令,你的程序)

你可以做到这一点在Dockerfile:

CMD npm start 

或者在泊坞窗,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运行构建等)

+1

谢谢罗伯特 - 我用'CMD ['npm','start']''更新我的Dockerfile。那样做了。 –

+1

随时欢迎。固定为未来的参考。 – Robert

相关问题