【发布时间】:2021-07-02 22:13:34
【问题描述】:
FROM node:14.16.0-alpine3.13
RUN addgroup app && adduser -S -G app app
USER app
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package*.json ./
RUN npm install
COPY . .
ENV APP_URL=http://api.myapp.com
EXPOSE 3000
CMD ["npm", "start"]
这是我的 docker 文件。我正在尝试对示例 react-app 进行 dockerize 处理。我在组中添加了用户,然后将该用户用于进一步的命令,如您在此代码的第二行中看到的那样。我相信默认情况下,只有 root 用户有权写入这些文件,并且为了对这些文件进行更改,root 用户不应该是用户。因此我在这里创建了app 用户。
但是在运行docker build -t react-app. 之后。我收到以下错误 -
我在这里做错了什么?有什么建议吗?
【问题讨论】:
-
我没有工作。但是为什么会抛出这个错误呢?
-
在你的Dockerfile中,你能不能在
COPY package*.json ./之后添加RUN ls -la和RUN whoami,让我们知道输出是什么? -
我可能会以 root 用户身份安装所有软件包,正如 @AjeetShah 所建议的那样,并且仅在您指定运行时
CMD的最后一刻才切换到USER app。这将使安装运行,但阻止应用程序修改自己的源或资产。 -
你能改变这条线
COPY package.json ./吗?package-lock.json可能会导致问题。 -
@AjeetShah 即使我使用 root 用户,当我使用
npm start启动我的应用程序时,permissions denied再次抛出错误,我遇到了这个解决方案,我们不应该使用 root 用户。另外,也不推荐。
标签: node.js reactjs linux docker npm