我试图运行下面的docker文件
FROM node:latest
VOLUME /data
COPY package.json /data/
WORKDIR /data
RUN npm install
COPY . /data/
ENTRYPOINT ["npm", "run", "nodeApp"]
我能够在没有任何错误的情况下构建项目,但在运行时会抛出节点模块未找到错误。
更新:它会抛出,' json-server'在index.js文件中找不到异常
我的包结构如下,
data
db.json
Dockerfile
index.js
package.json
Package.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
}
答案 0 :(得分:0)
基于您的package.json
和项目结构
["npm", "run", "payments-api"]
payments-api
应为node index.js values/db.json
修改强>:
根据所提供的信息很难分辨,但
json-server
index.js
json-server
中调用index.js
命令,但由于它没有全局安装,因此无法找到它答案 1 :(得分:0)
在运行npm install之后,您似乎正在将数据复制到卷中。 我想COPY会覆盖你的安装。 确认。
另外,将所有数据复制到容器中并不是一个好习惯。 每次更新源代码时都需要重建容器。
我建议你这样:
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.js