您好,先生,我是Docker的新手,我正在使用ubuntu budgie(linux)20.04,我的docker版本是
Docker version 18.09.9, build 1752eb3
我已经使用快照包管理器安装了docker,路径是这样的
/snap/bin/docker.machine /snap/bin/docker.compose /snap/bin/docker /snap/bin/docker.help
我通过此链接在主机中安装了nodejs和npm
nodejs install link
我正在通过与docker制作单个nodejs express应用程序来学习docker。这是我的Dockerfile
FROM node:lts
USER node
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
WORKDIR /home/node
COPY package.json .
RUN npm install
COPY . .
CMD ['npm', 'start']
这是我的app.js文件
const express = require('express');
const app = express()
app.get('/', (req, res) => {
res.send('hello world')
})
app.listen(3000, () => {
console.log('app is renning at 3000');
})
当我开始从此dockerfile构建映像时,出现此错误
internal/fs/utils.js:230
throw err;
^
Error: EACCES: permission denied, open '/usr/local/lib/node_modules/npm/bin/npm-cli.js'
at Object.openSync (fs.js:458:3)
at Object.readFileSync (fs.js:360:35)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1152:22)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
errno: -13,
syscall: 'open',
code: 'EACCES',
path: '/usr/local/lib/node_modules/npm/bin/npm-cli.js'
}
The command '/bin/sh -c npm install --only=prod' returned a non-zero code: 1
请告诉我该如何解决。 谢谢。
答案 0 :(得分:1)
我遇到了同样的问题,我尝试了几种解决方案,但是唯一的工作方式是更改docker版本
.getAttribute
我正在使用docker-ce|5:18.09.0~3-0~ubuntu-bionic|https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
docker-ce|18.06.3~ce~3-0~ubuntu|https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
docker-ce|18.06.2~ce~3-0~ubuntu|https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
,而我切换到5:19.03.9~3-0~ubuntu-bionic
我保留了相同的Dockerfile配置:
18.06.3~ce~3-0~ubuntu
FROM node:10
USER root
WORKDIR /home/node/app
COPY package.json .
RUN npm install
# Bundle app source COPY . /app
EXPOSE 8080 CMD [ "node", "server.js" ]
您可以检查此链接以获取更多详细信息on reinstalling docker
答案 1 :(得分:0)
此错误源于以下事实:您当前的用户没有足够的权限来访问npm cli文件。
您尝试了最小的Dockerfile:
FROM node:lts
WORKDIR /home/node
COPY . .
RUN npm install
CMD ['npm', 'start']
它对您有用吗?如果是这样,我假设您的用户node
是您的Dockerfile中的问题,或者您还有我们在OP中看不到的其他脚本。
答案 2 :(得分:0)
请尝试使用yarn而不是node。
FROM node:10
USER root
WORKDIR /home/node/app
COPY package.json .
RUN yarn install