Ris*_*rma 7 permissions docker reactjs dockerfile npm-start
我创建了一个 React 应用程序,并尝试在带有卷的 docker 容器上运行它(将容器内的内容与外部文件映射),之前一切都工作正常,但现在面临共享问题。有人能帮我吗?这是一个权限问题,但不知道如何解决。root 用户有权访问 node_modules 文件夹。如何授予节点用户访问权限?
我的泊坞窗文件
FROM node:alpine
USER node
WORKDIR '/home/node'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)
使用的命令:
docker build -t frontend -f Dockerfile.dev .
Run Code Online (Sandbox Code Playgroud)
docker run -p 3000:3000 -v /home/node/node_modules -v $(pwd):/home/node frontend:latest
Run Code Online (Sandbox Code Playgroud)
容器中的访问:
~ $ ls -l
total 1488
-rw-rw-r-- 1 node node 124 Jun 20 08:37 Dockerfile.dev
-rw-rw-r-- 1 node node 3369 Jun 17 18:25 README.md
drwxr-xr-x 3 node node 4096 Jun 17 18:45 build
-rw-rw-r-- 1 node node 230 Jun 20 06:56 docker-compose.yml
drwxrwxr-x 1041 root root 36864 Jun 20 19:15 node_modules
-rw-rw-r-- 1 node node 1457680 Jun 18 18:28 package-lock.json
-rw-rw-r-- 1 node node 811 Jun 17 18:26 package.json
drwxrwxr-x 2 node node 4096 Jun 17 18:25 public
drwxrwxr-x 2 node node 4096 Jun 17 18:25 src
Run Code Online (Sandbox Code Playgroud)
Ris*_*rma 19
很明显,容器中的node_modules文件夹是由root用户在npm install步骤中构建的,因此具有root用户。这就是我们在设置节点用户时无法访问该文件夹的原因。为了解决这个问题,我们首先需要使用root用户,在将文件从本地目录复制到映像时,我们必须向节点用户授予权限,然后将节点设置为用户,如下所示:
COPY --chown=node:node package.json .
RUN npm install
COPY --chown=node:node . .
USER node
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12807 次 |
最近记录: |