我试图运行下面的docker文件
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”异常。
我的包裹结构如下,
data
db.json
Dockerfile
index.js
package.jsonPackage.json文件如下,
{
"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文件
"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
}发布于 2016-03-10 06:53:41
基于您的package.json和项目结构
["npm", "run", "payments-api"]payments-api应该是node index.js values/db.json编辑
根据所提供的信息很难判断,但是
json-server在index.js中不是必需的json-server中调用index.js命令,但是由于它不是全局安装的,所以找不到它发布于 2016-03-11 12:08:17
看起来,在运行npm安装之后,您正在将数据复制到卷中。我想拷贝会覆盖你的安装。来确认。
此外,将所有数据复制到容器中也不是一个好做法。每次更新源代码时,都需要重新构建容器。
我建议你做这样的事:
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或
CMD node /src/index.jshttps://stackoverflow.com/questions/35908540
复制相似问题