docker 容器上已安装卷中的 Creating/generating 个文件属于普通用户而非 root
Creating/generating files in a mounted volume on docker container own to regular user and not to root
问题:无法在 docker 中不属于 root 的已安装卷上 generate/create 文件。当我创建用户并将其推送到 docker-compose 时抛出权限被拒绝的错误。
场景:
version: '3.4'
services:
app:
image: ubuntu:latest
command: /home/john/clone_repository_and_generate_reports.sh
volumes:
- "/home/john/:/home/john/"
environment:
- NODE_ENV=production
env_file:
- ./.config.env
我的 docker-compose.yml
文件调用简单的 bash 脚本,该脚本克隆 github 存储库并在 python 中生成不同的报告,另外我想要此数据可供用户 john
访问和持久保存,不幸的是,保存的文件仅在 root
上。
如果我在 Dockerfile 上添加其他用户 RUN addgroup -S developer && adduser -S john -G developer
它会在 docker-compose.yml 上使用 user: john
属性访问此已安装的卷时出现权限问题文件
预期行为:克隆了 github 存储库并生成了属于 john
而 不属于 的文件 root
.
在 docker 上处理权限问题的正确方法是什么?
我怎样才能将这些文件保存在这个已安装卷上的 john
用户下?
为用户设置规则,因此:
user: john
解决方案:我们需要在用户范围内运行 docker 编写脚本,并使用用户 ID 和组 ID 约定推送 user
属性("uid:gid"
).
示例:运行特定用户的命令sudo -iu john
和 运行 docker-compose 函数:USER_INFO=$(id -u):$(id -g) docker-compose up --build --force-recreate -d
组成文件结构:
version: '3.4'
services:
app:
image: ubuntu:latest
command: /home/john/clone_repository_and_generate_reports.sh
volumes:
- "/home/john/:/home/john/"
environment:
- NODE_ENV=production
env_file:
- ./.config.env
user: "${USER_INFO}"
问题:无法在 docker 中不属于 root 的已安装卷上 generate/create 文件。当我创建用户并将其推送到 docker-compose 时抛出权限被拒绝的错误。
场景:
version: '3.4'
services:
app:
image: ubuntu:latest
command: /home/john/clone_repository_and_generate_reports.sh
volumes:
- "/home/john/:/home/john/"
environment:
- NODE_ENV=production
env_file:
- ./.config.env
我的
docker-compose.yml
文件调用简单的 bash 脚本,该脚本克隆 github 存储库并在 python 中生成不同的报告,另外我想要此数据可供用户john
访问和持久保存,不幸的是,保存的文件仅在root
上。如果我在 Dockerfile 上添加其他用户
RUN addgroup -S developer && adduser -S john -G developer
它会在 docker-compose.yml 上使用user: john
属性访问此已安装的卷时出现权限问题文件
预期行为:克隆了 github 存储库并生成了属于 john
而 不属于 的文件 root
.
在 docker 上处理权限问题的正确方法是什么?
我怎样才能将这些文件保存在这个已安装卷上的 john
用户下?
为用户设置规则,因此:
user: john
解决方案:我们需要在用户范围内运行 docker 编写脚本,并使用用户 ID 和组 ID 约定推送 user
属性("uid:gid"
).
示例:运行特定用户的命令sudo -iu john
和 运行 docker-compose 函数:USER_INFO=$(id -u):$(id -g) docker-compose up --build --force-recreate -d
组成文件结构:
version: '3.4'
services:
app:
image: ubuntu:latest
command: /home/john/clone_repository_and_generate_reports.sh
volumes:
- "/home/john/:/home/john/"
environment:
- NODE_ENV=production
env_file:
- ./.config.env
user: "${USER_INFO}"