[英]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.