docker - 共享卷 Docker 权限
问题描述
我正在使用 docker-compose 创建大量的 Docker 容器。所有容器都有一个共享卷。
volumes:
- ${PHP_SERVICES_FOLDER}:/var/www/web
码头集装箱如下。
- Jenkins(FROM jenkins/jenkins:latest) - 写入共享卷
- Nginx(FROM nginx) - 从共享卷中读取并使用 php-fpm 容器
- PHP-FPM(来自 php:7.2-fpm)
使用具有 777 权限的卷文件,Nginx 和 PHP 可以读取、写入和执行文件,但只要我在 Jenkins 中触发更新卷中的文件的构建。
我认为当权限为 777 时它起作用的原因是因为它允许“其他”用户完全访问该卷。
如何让 Nginx、PHP-FPM 和 Jenkins 使用同一个用户来读取、写入和执行该卷中的文件?
解决方案
您可以在每个 Dockerfile 中使用相同的用户创建一个用户,然后使用这些suid
授予用户权限。uid
例如:
# your dockerfile
RUN groupadd -g 799 appgroup
RUN useradd -u 799 -g appgroup shareduser
USER shareduser
然后,您只需要chown
使用新创建的卷中的uid
所有内容(在任何容器或主机中,因为uid
s 在容器和主机之间共享:
chown -R 799:799 /volume/root/
推荐阅读
- html - 我在 scss 中使用此代码进行媒体查询不起作用
- charts - 如何在 jasper 报告 3d 条形图中显示总和值?
- arrays - 无法访问二级 JSON 字符串
- apache-kafka - 如何使用 Kafka 消费者为 Flink CEP 编写 Junit 测试代码
- reactjs - react-native-image-picker 视频的持续时间
- dart - DropdownMenuItem 如何获取 Text 小部件的字符串数据
- javascript - 如何将 JavaScript 图像灯箱更改为视频灯箱
- firebase - 如何将 currentUser 电子邮件插入实时数据库
- git - 在 jenkins 中从 github 测试 Laravel 项目
- ethereum - 这些交易所的 ETH 交易会在 https://etherscan.io/txs 上列出吗?