首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EACCES许可被拒绝在船坞中建立角

EACCES许可被拒绝在船坞中建立角
EN

Stack Overflow用户
提问于 2018-07-04 01:43:24
回答 1查看 4.9K关注 0票数 4

当我运行时,会得到一个权限错误。

代码语言:javascript
复制
ng build --prod --env=prod

在码头集装箱里。我想我正在处理所有的npm配置设置,并且安装很好。但是当我运行时,我会得到这样的错误:

代码语言:javascript
复制
    EACCES: permission denied, unlink '/home/node/rbs/dist/0.0b84f6ea259174c0238a.chunk.js'
    Error: EACCES: permission denied, unlink '/home/node/rbs/dist/0.0b84f6ea259174c0238a.chunk.js'
        at Object.fs.unlinkSync (fs.js:1061:18)
        at rimrafSync (/home/node/rbs/node_modules/fs-extra/lib/remove/rimraf.js:254:15)
        at options.readdirSync.forEach.f (/home/node/rbs/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
        at Array.forEach (<anonymous>)
        at rmkidsSync (/home/node/rbs/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
        at rmdirSync (/home/node/rbs/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
        at Object.rimrafSync [as removeSync] (/home/node/rbs/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
        at Class.run (/home/node/rbs/node_modules/@angular/cli/tasks/build.js:29:16)
        at Class.run (/home/node/rbs/node_modules/@angular/cli/commands/build.js:250:40)
        at resolve (/home/node/rbs/node_modules/@angular/cli/ember-cli/lib/models/command.js:261:20)
        at new Promise (<anonymous>)
        at Class.validateAndRun (/home/node/rbs/node_modules/@angular/cli/ember-cli/lib/models/command.js:240:12)
        at Promise.resolve.then.then (/home/node/rbs/node_modules/@angular/cli/ember-cli/lib/cli/cli.js:140:24)
        at <anonymous>

下面是我的docker配置:

代码语言:javascript
复制
    FROM node:8.11.3-alpine as build

    RUN apk add --update python make

    ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
    ENV PATH=/home/node/.npm-global/bin:$PATH
    USER node

    RUN mkdir /home/node/rbs && \
          npm install -g -f @angular/cli@1.7.4

    ##
    ##  The section below is split to save cache time

    #
    # dependencies build only (only includes files for npm install)
    #
    RUN npm -g config set user root

    ADD ./package.json /home/node/rbs
    ADD ./package-lock.json /home/node/rbs

    RUN cd /home/node/rbs && \
          npm install

    #
    # Source build with ng (requires all sources)
    #
    ADD . /home/node/rbs

    RUN cd /home/node/rbs && \
          ng build --prod --env=prod


    #
    #  Runtime; we will vend resources via nginx
    #
    FROM nginx:1.13.8-alpine

    COPY --from=build /home/node/rbs/dist /usr/share/nginx/html

    ADD ./container-files .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 04:05:20

默认情况下,docker build将整个当前目录作为其“上下文”目录,然后当您的Dockerfile表示ADD . /home/node/rbs时,该目录将被添加到图像中。但是,如果您的工作树已经有了一个dist目录,那么这个目录也会被复制进来,并且ng build命令必须处理预先存在的内容。

您可以通过运行

代码语言:javascript
复制
rm -rf dist
docker build .

一个更永久的修复方法是创建一个.dockerignore文件,告诉Docker在进行构建时不要包含dist目录。

代码语言:javascript
复制
echo /dist >> .dockerignore
docker build .

如果dist目录已经存在,则ADD命令将添加根所拥有

所有新的文件和目录都是用UID和GID 0创建的,除非可选的--chown标志指定了其他的.

由于您已经告诉ng build作为备用NODE用户运行,它将无法删除根拥有的dist树,这将导致您看到的错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51164742

复制
相关文章

相似问题

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