docker - 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 build
thendocker-compose up
来构建和运行;mydocker-compose.yml
还包含一个音量指令:
services:
...
server:
...
volumes:
- ./uploads:/home/node/app/uploads
我的测试表明,这条指令docker-compose.yml
是导致问题的原因——没有它,uploads
目录所有者被正确设置为node
——但我不明白为什么。在这种情况下,指令是docker-compose.yml
多余的吗?如果我想将卷映射到本地目录(我相信这个指令是必要的),怎么样?
解决方案
绑定卷将保留主机上的原始所有权。您可以将主机上的目录模式更改为 77x,也可以尝试这种方式。
更新:根据您的反馈,您可以chmod
在 docker 启动脚本中添加。
推荐阅读
- asp.net - 使用先前测试的值
- r - 用ggplot2显示点和水平线(段)的意思
- java - 如何破解 mysql jdbc 驱动程序以更改每个 sql 以在程序中执行
- javascript - 如何修改代码以便可以使用 react 和 typescript 调用 usehook?
- spring-boot - 为什么我在使用 HikariCP 运行此代码时得到一个空数据源?
- php - Ajax 返回 GET 请求而不是 POST
- android - 动画在 Android 的 NestedScrollView 中的 RecyclerView 中不起作用?
- c# - 从列表中插入值到数据库
- angular - 无法以角度加载两个路由器插座
- javascript - ASP.NET Core - 使用下拉列表更新表格行