2017-05-31 61 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

相關問題