【发布时间】:2020-11-28 23:51:44
【问题描述】:
我正在尝试使用 Dockerfile 在 OpenShift 上部署 Create React App webapp。 OpenShift 构建成功完成,当我访问该路线时,我可以看到应用程序运行了 1 秒钟,然后屏幕上出现此错误:
Failed to compile
EACCES: permission denied, open '/home/node/app/.eslintcache'
我不明白为什么会出现权限被拒绝错误,因为我已经将所需的目录权限分配给了我的 Dockerfile 中节点 Docker 映像提供的 node 用户。
这是我的 Dockerfile:
FROM node:14-alpine
RUN mkdir -p /home/node/app &&\
chmod -R 775 /home/node/app &&\
chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json /home/node/app/
USER node
RUN npm install
COPY --chown=node:node . /home/node/app
EXPOSE 3000
CMD ["npm", "start"]
软件版本:
反应脚本 4.0.1
OpenShift 4.2、4.4、4.5(全部试用)
这是我用作参考的tutorial 和source repo。
更新:
感谢 Will Gordon 的回答,我能够弄清楚。 OpenShift 希望您指定用户 ID 而不是名称。此外,OpenShift 将容器作为属于组 0 的随机 ID 运行,因此需要指定该组的权限。这是工作的 Dockerfile:
FROM node:14-alpine
RUN mkdir -p /home/node/app &&\
chown -R node:node /home/node/app
WORKDIR /home/node/app
RUN chgrp -R 0 /home/node/app &&\
chmod -R g+rwX /home/node/app
COPY package*.json /home/node/app/
USER 1000
RUN npm install
COPY --chown=node:node . /home/node/app
EXPOSE 3000
CMD ["npm", "start"]
【问题讨论】:
-
你需要在安装 npm 之前 cd 进入 /home/node/app/
-
这不是
WORKDIR /home/node/app的用途吗?我的 Dockerfile 与this question 中的解决方案非常相似。此外,Dockerfile 在构建时没有给出错误,所以我假设权限很好。导致问题的原因是最新的react-scripts版本开始创建的新.eslintcache文件。
标签: node.js reactjs docker openshift create-react-app