首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Docker上构建Node应用程序

问在Docker上构建Node应用程序
EN

Stack Overflow用户
提问于 2016-03-10 05:45:40
回答 2查看 537关注 0票数 1

我试图运行下面的docker文件

代码语言:javascript
复制
FROM node:latest

VOLUME /data

COPY package.json /data/
WORKDIR /data
RUN npm install

COPY . /data/

ENTRYPOINT ["npm", "run", "nodeApp"]

我能够构建该项目,没有任何错误,但在运行时,它抛出节点模块没有找到错误。

update:它在index.js文件中抛出“json-server”异常。

我的包裹结构如下,

代码语言:javascript
复制
data
   db.json
Dockerfile
index.js
package.json

Package.json文件如下,

代码语言:javascript
复制
{
      "name": "node-api",
      "version": "0.0.1",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "nodeApp": "node index.js data/db.json"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "json-server": "^0.8.2",
        "lowdb": "^0.10.2",
        "node-uuid": "^1.4.7"
      }
    }

更新: index.js文件

代码语言:javascript
复制
"use strict";
var jsonServer = require('json-server');
var low = require('lowdb');
var uuid = require('node-uuid');

var fs = require('fs');
var db = JSON.parse(fs.readFileSync(process.argv[2]));
var writeDb = low(process.argv[2]);

var server = jsonServer.create();
server.use(jsonServer.defaults());

var router = jsonServer.router(db);
router.db._.id = 'id';

router.render = function (req, res) {
  return enhance(req, res);
};

server.use('/api', router);
server.use(router);
server.listen(8081);

function enhance(req, res) {
 return res.jsonp(res.locals.data); // do no processing
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-10 06:53:41

基于您的package.json和项目结构

  1. 入口点应该是["npm", "run", "payments-api"]
  2. payments-api应该是node index.js values/db.json

编辑

根据所提供的信息很难判断,但是

  1. 可能是json-server在index.js中不是必需的
  2. 您正在绑定以在json-server中调用index.js命令,但是由于它不是全局安装的,所以找不到它
票数 0
EN

Stack Overflow用户

发布于 2016-03-11 12:08:17

看起来,在运行npm安装之后,您正在将数据复制到卷中。我想拷贝会覆盖你的安装。来确认。

此外,将所有数据复制到容器中也不是一个好做法。每次更新源代码时,都需要重新构建容器。

我建议你做这样的事:

代码语言:javascript
复制
FROM node:latest

RUN mkdir -p /src
WORKDIR /src

ADD package.json /src/package.json
RUN npm install;

EXPOSE 8081
VOLUME ./:/src/
CMD npm nodeApp

或

代码语言:javascript
复制
CMD node /src/index.js
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35908540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档