首页 > 解决方案 > Docker 卷更改所有者为非 root

问题描述

我想创建一个uploads卷并将其所有者设置为node用户。但是在运行容器时,我发现卷的所有者是root. 这是我的 Docker 文件:

FROM node:12.21
RUN apt-get update && apt-get -y install curl vim bash nano

WORKDIR /home/node/app

COPY package.json .
COPY yarn.lock .

RUN mkdir ./uploads

RUN chown -R node:node .
USER node

RUN yarn install

COPY --chown=node:node . .

VOLUME /home/node/app/uploads

我用docker-compose buildthendocker-compose up来构建和运行;mydocker-compose.yml还包含一个音量指令:

services:
  ...
  server:
    ...
    volumes:
      - ./uploads:/home/node/app/uploads

我的测试表明,这条指令docker-compose.yml是导致问题的原因——没有它,uploads目录所有者被正确设置为node——但我不明白为什么。在这种情况下,指令是docker-compose.yml多余的吗?如果我想将卷映射到本地目录(我相信这个指令是必要的),怎么样?

标签: dockerdocker-composedocker-volume

解决方案


绑定卷将保留主机上的原始所有权。您可以将主机上的目录模式更改为 77x,也可以尝试这种方式

更新:根据您的反馈,您可以chmod在 docker 启动脚本中添加。


推荐阅读