繁体   English   中英

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

[英]Why is my docker node container exiting

我正在尝试使用 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}`);
});

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

缺少指定 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 run、npm run build 等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM