【问题标题】:Docker data-only container permissionsDocker 纯数据容器权限
【发布时间】:2015-08-25 16:12:51
【问题描述】:

我正在开发 PHP 应用程序,但我被 Docker 卷所困扰。我试图为我的 PHP 应用程序创建一个单独的仅数据容器,但由于权限问题无法使其工作......我已经用谷歌搜索并阅读了所有我能读到的最接近工作解决方案is described here

但它有点旧,我也无法让它工作。

我用一个简单的测试代码创建了一个 repo: https://github.com/oleynikd/docker-volumes-permissions/

这个简单的项目使用 docker-compose 来运行 2 个容器:

  1. 对于 php fpm
  2. 对于 nginx

php 代码被映射到 php 容器并位于/src 目录中。

主要问题是 PHP 无权写入代码目录,因为它以 www-data 用户身份运行,但代码目录属于 id 为 1000 和组的用户员工

运行 docker-compose up 并访问 /index.php 后,您将看到警告和 ls -lah 输出,显示权限问题。截图如下:

我尝试通过将 RUN mkdir -p /src && chown -R www-data:www-data /src 添加到 php Dockerfile 来解决此问题,但没有帮助。

所以问题是:

  1. 为什么/src的所有者和组是1000:staff?
  2. 如何解决这个问题?

我确定解决方案很简单,但我找不到。 请帮忙!

附:如果您知道如何解决此问题,请随时为 repo 做出贡献。

【问题讨论】:

    标签: php docker docker-compose


    【解决方案1】:

    文件的所有者是1000:staff,因为1000:1000 是主机上文件所有者的uid:gid

    您可以使用卷来避免它,而无需指定主机上文件的路径并在 dockerfile 中使用 COPY 指令添加文件。但也许您需要轻松访问主机上的这些文件?

    对于开发环境(和仅限开发环境),我使用a hacky solution that I described in this answer 来管理它。

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2016-12-26
      • 2018-07-17
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多