在 OpenShift 上部署 Create React App:EACCES:权限被拒绝,打开 '/home/node/app/.eslintcache'

Deploying Create React App on OpenShift: EACCES: permission denied, open '/home/node/app/.eslintcache'

我正在尝试使用 Docker 文件在 OpenShift 上部署一个 Create React App webapp。 OpenShift 构建成功完成,当我访问路线时,我能够看到应用程序 运行 1 秒,然后屏幕上出现此错误:

Failed to compile
EACCES: permission denied, open '/home/node/app/.eslintcache'

我不明白为什么会出现权限被拒绝的错误,因为我已经在我的 Docker 中为节点 Docker 图像提供的 node 用户分配了所需的目录权限]文件。

这是我的 Docker 文件:

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 I used as reference and the source repo


更新:
多亏了 Will Gordon 的回答,我才弄明白了。 OpenShift 希望您指定用户 ID 而不是名称。此外,OpenShift 将容器作为属于组 0 的随机 ID 运行,因此需要指定该组的权限。这是工作 Docker 文件:

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

您正在为该用户设置特定用户和权限。 OpenShift 的默认配置是 运行 个具有随机 UID 的容器。建议在设置权限时使用根 GID (GID 0),而不是 UID,因为 OpenShift 会自动将 GID 0 应用到用户。

您可以在文档 https://docs.openshift.com/container-platform/3.11/creating_images/guidelines.html#openshift-specific-guidelines

中找到有关为 OpenShift 创建图像的更多指南