Docker 卷将所有者更改为非 root

Ben*_*ore 5 docker docker-compose docker-volume

我想创建一个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
Run Code Online (Sandbox Code Playgroud)

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

services:
  ...
  server:
    ...
    volumes:
      - ./uploads:/home/node/app/uploads
Run Code Online (Sandbox Code Playgroud)

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

goh*_*m'c 0

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

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