对于新手的问题,我很抱歉,但我一直在找出这个错误,我有一个Express应用程序,我正在尝试将其作为docker容器运行。我已经使用了这个Dockerfile:
FROM node:14.17.0-alpine
COPY /src /nodejs
WORKDIR /nodejs
ADD package*.json ./
RUN npm install
CMD [ "node", "app.js" ]
这是我的package.js文件:
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js -e js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"express-rate-limit": "^5.1.3",
"nodemon": "^2.0.3",
"prom-client": "^12.0.0",
"puppeteer": "^10.4.0"
}
}
我使用的是windows 10,我用来部署容器的命令是:
docker run --name express-api -d -p 4000:4000 docker-express-app
在power shell中执行上述命令后得到的错误:
internal/modules/cjs/loader.js:888
throw err;
^
Error: Cannot find module '/nodejs/app.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
at Function.Module._load (internal/modules/cjs/loader.js:730:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
任何关于这个问题的想法都是值得感谢的。
附言:我的项目层次结构如下:
发布于 2021-10-26 07:29:22
您没有复制容器中的app.js文件。
WORKDIR /nodejs
COPY src .
COPY app.js .
ADD package*.json ./
RUN npm install
CMD [ "node", "app.js" ]
这个应该可以解决这个问题。
我认为一种更简单的方法是创建一个dockerignore文件并复制所有内容。另一个问题是您使用的是ADD而不是COPY。你只需要在容器中复制你的文件,我认为复制就足够添加has some extra functionality了,这可能会让人感到困惑。
https://stackoverflow.com/questions/69718887
复制相似问题