Node.js 在OpenShift上部署Create React应用程序:EACCES:权限被拒绝,打开“/home/node/App/.eslintcache”

Node.js 在OpenShift上部署Create React应用程序:EACCES:权限被拒绝,打开“/home/node/App/.eslintcache”,node.js,reactjs,docker,openshift,create-react-app,Node.js,Reactjs,Docker,Openshift,Create React App,我正在尝试使用Dockerfile在OpenShift上部署CreateReact应用程序webapp。OpenShift构建成功完成,当我访问路由时,我能够看到应用程序运行1秒,然后屏幕上出现此错误: Failed to compile EACCES: permission denied, open '/home/node/app/.eslintcache' 我不明白为什么会出现“权限拒绝”错误,因为我已将所需的目录权限分配给Dockerfile中节点Docker映像提供的节点用户 这是我的

我正在尝试使用Dockerfile在OpenShift上部署CreateReact应用程序webapp。OpenShift构建成功完成,当我访问路由时,我能够看到应用程序运行1秒,然后屏幕上出现此错误:

Failed to compile
EACCES: permission denied, open '/home/node/app/.eslintcache'
我不明白为什么会出现“权限拒绝”错误,因为我已将所需的目录权限分配给Dockerfile中节点Docker映像提供的节点用户

这是我的Dockerfile:

从节点:14 运行mkdir-p/home/node/app&&\ chmod-R 775/主页/节点/应用程序&&\ chown-R节点:节点/主页/节点/应用程序 WORKDIR/home/node/app 复制包*.json/home/node/app/ 用户节点 运行npm安装 COPY-chown=node:node/主页/节点/应用程序 暴露3000 命令[npm,开始] 软件版本: react脚本4.0.1 OpenShift 4.2、4.4、4.5已全部试用

这是我用作参考的和

更新: 多亏了威尔·戈登的回答,我才明白了这一点。OpenShift希望您指定用户ID而不是名称。此外,OpenShift将容器作为属于组0的随机ID运行,因此需要指定该组的权限。以下是正在工作的Dockerfile:

从节点:14 运行mkdir-p/home/node/app&&\ chown-R节点:节点/主页/节点/应用程序 WORKDIR/home/node/app 运行chgrp-R 0/home/node/app&&\ chmod-rg+rwX/home/node/app 复制包*.json/home/node/app/ 用户1000 运行npm安装 COPY-chown=node:node/主页/节点/应用程序 暴露3000 命令[npm,开始]
您正在设置特定用户及其权限。OpenShift的默认配置是使用随机UID运行容器。建议在设置权限时使用根GID GID 0,而不是UID,因为OpenShift将自动将GID 0应用于用户


您可以在文档中找到有关为OpenShift创建图像的更多指导原则。您正在为该用户设置特定的用户和权限。OpenShift的默认配置是使用随机UID运行容器。建议在设置权限时使用根GID GID 0,而不是UID,因为OpenShift将自动将GID 0应用于用户


您可以在文档中找到有关为OpenShift创建图像的更多指导原则

您需要在npm安装之前将图像刻录到/home/node/app/中这不是WORKDIR/home/node/app的用途吗?我的Dockerfile与中的解决方案非常相似。此外,Dockerfile在构建时没有错误,所以我假设权限是可以的。是最新版本的react脚本开始创建的新.eslintcache文件导致了问题。您需要在npm安装之前将cd刻录到/home/node/app/中,这不是WORKDIR/home/node/app的用途吗?我的Dockerfile与中的解决方案非常相似。此外,Dockerfile在构建时没有错误,所以我假设权限是可以的。最新的react脚本版本开始创建的新.eslintcache文件是导致问题的原因。谢谢!正是我需要的。我已经用工作摘要文件更新了问题。谢谢!正是我需要的。我已经用正在工作的Dockerfile更新了这个问题。