首页 > 解决方案 > 共享卷 Docker 权限

问题描述

我正在使用 docker-compose 创建大量的 Docker 容器。所有容器都有一个共享卷。

volumes:
  - ${PHP_SERVICES_FOLDER}:/var/www/web

码头集装箱如下。

使用具有 777 权限的卷文件,Nginx 和 PHP 可以读取、写入和执行文件,但只要我在 Jenkins 中触发更新卷中的文件的构建。

我认为当权限为 777 时它起作用的原因是因为它允许“其他”用户完全访问该卷。

如何让 Nginx、PHP-FPM 和 Jenkins 使用同一个用户来读取、写入和执行该卷中的文件?

标签: dockerjenkinsdocker-compose

解决方案


您可以在每个 Dockerfile 中使用相同的用户创建一个用户,然后使用这些suid授予用户权限。uid

例如:

# your dockerfile
RUN groupadd -g 799 appgroup
RUN useradd -u 799 -g appgroup shareduser
USER shareduser

然后,您只需要chown使用新创建的卷中的uid所有内容(在任何容器或主机中,因为uids 在容器和主机之间共享:

chown -R 799:799 /volume/root/

推荐阅读