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



我是docker的新手。我正试图在docker容器中运行我的应用程序。

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"]

我创建了一个群&名为myuser的用户。还试图将所有权提供给myuser。当我试图构建图像时,我得到了以下错误。

构建命令:

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

错误:

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

当docker运行命令RUN tsc时会发生错误。它正在尝试将生成文件写入创建的工作目录,但由于权限问题无法创建。

有人能帮我做这件事吗,因为我最终正在努力学习码头工人。如有任何帮助,我们将不胜感激。

注意:如果我们能写一个更好的Dockerfile或docker-compose.yml.,请纠正我

默认情况下,COPYed文件始终归root所有。将--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

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

最新更新