简体   繁体   English

Docker 文件:EACCES:权限被拒绝错误 - 无法写入文件:节点

[英]Docker File: EACCES: permission denied error - Could not write file : Node

I am newbie with docker. I am trying to run my application in a docker container.我是 docker 的新手。我正在尝试在 docker 容器中运行我的应用程序。

Dockerfile Dockerfile

FROM node:14.16.0-alpine

ARG SSH_KEY
RUN apk update && apk add openssh-client git \
    && addgroup myuser \
    && adduser myuser -G myuser -D /home/myuser -u 999 \
    && mkdir -p /home/myuser/.ssh \
    && chmod 0700 /home/myuser/.ssh \
    && ssh-keyscan github.com > /home/myuser/.ssh/known_hosts \
    && chown -R myuser:myuser /home/myuser

USER myuser:myuser

RUN mkdir -p /home/myuser/app/spa-proxy && chown -R myuser:myuser /home/myuser/app/spa-proxy

COPY package.json /home/myuser/app/spa-proxy
COPY package-lock.json /home/myuser/app/spa-proxy

WORKDIR /home/myuser/app/spa-proxy

ARG INSTALL_ENV="--production"

RUN echo "$SSH_KEY" > /home/myuser/.ssh/id_rsa && chmod 0600 /home/myuser/.ssh/id_rsa \
    && npm install ${INSTALL_ENV} \
    && rm /home/myuser/.ssh/id_rsa

COPY . /home/myuser/app/spa-proxy
ENV PATH $PATH:./node_modules/.bin/
RUN tsc

EXPOSE 8001
CMD ["node", "./.build/src/index.js"]

I created a group & user called myuser.我创建了一个名为 myuser 的组和用户。 Also tried to provide the ownership to myuser.还尝试将所有权提供给 myuser。 When i tried to build the image, I am getting the following error.当我尝试构建图像时,出现以下错误。

Build Command:构建命令:

sudo docker build --build-arg SSH_KEY="$(cat ~/.ssh/id_rsa)" -t testfolder .

Error:错误:

error TS5033: Could not write file '/home/myuser/app/spa-proxy/.build/src/types/index.js': EACCES: permission denied, open '/home/myuser/app/spa-proxy/.build/src/types/index.js'.
The command /bin/sh -c tsc returned a non-zero code: 2

The error happens when docker runs the command RUN tsc.当 docker 运行命令 RUN tsc 时会发生错误。 It is trying to write the build file into the working directory created, but not able to create due to permission issue.它试图将构建文件写入创建的工作目录,但由于权限问题无法创建。

Can somebody help me with this as I am eventually trying to learn the docker. Any help would be really appreciated.有人可以帮助我解决这个问题,因为我最终正在尝试学习 docker。任何帮助将不胜感激。

Note: Please correct me if we can write a better Dockerfile or docker-compose.yml.注意:如果我们可以写出更好的 Dockerfile 或 docker-compose.yml,请指正。

COPYed files are always owned by root by default.默认情况下,复制的文件始终由 root 拥有。 Add --chown= to your COPY statement to have the copied files be owned by 'myuser' like this--chown=添加到您的 COPY 语句中,以使复制的文件像这样归“myuser”所有

COPY --chown=myuser:myuser package.json /home/myuser/app/spa-proxy
COPY --chown=myuser:myuser package-lock.json /home/myuser/app/spa-proxy

and

COPY --chown=myuser:myuser . /home/myuser/app/spa-proxy

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 EBS Node.js 14:错误 TS5033:无法写入文件:EACCES:权限被拒绝 - EBS Node.js 14: error TS5033: Could not write file: EACCES: permission denied Docker 错误:EACCES:权限被拒绝,mkdir - Docker Error: EACCES: permission denied, mkdir 错误:EACCES:权限被拒绝 - Error: EACCES: permission denied Docker - “错误:EACCES:权限被拒绝,mkdir '/project/node_modules/.cache/@babel'” - Docker - "Error: EACCES: permission denied, mkdir '/project/node_modules/.cache/@babel'" EACCES:Node JS拒绝权限 - EACCES: permission denied with Node JS 错误 EACCES 权限被拒绝 mkdir multer node.js - Error EACCES permission denied mkdir multer node.js 节点应用程序收到“错误:EACCES:权限被拒绝,mkdir '.tmp' - node application getting "Error: EACCES: permission denied, mkdir '.tmp' 错误:EACCES:永久拒绝权限 - Error: EACCES: permission denied with forever Windows NodeJS:总是得到“错误:ENOENT:没有这样的文件或目录,打开”或“错误:EACCES:权限被拒绝,打开” - Windows NodeJS: always get either “Error: ENOENT: no such file or directory, open” or “Error: EACCES: permission denied, open” 如何修复macOS上的node.js写入文件权限被拒绝错误? - How to fix node.js on macOS write to file permission denied error?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM