Docker仅限数据的容器权限

时间:2015-08-25 16:12:51

标签: php docker docker-compose

我正在开发PHP应用程序而且我一直坚持使用Docker卷。我试图为我的PHP应用程序创建一个单独的仅数据容器,但由于权限问题而无法使其正常工作...我已经用Google搜索并尽可能阅读并且最接近工作解决方案is described here

但它有点陈旧,我也无法使它发挥作用。

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

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

  1. 对于php fpm
  2. 对于nginx
  3. php代码映射到php容器,位于/src目录。

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

    运行docker-compose并访问/index.php后,您会看到显示权限问题的警告和ls -lah输出。屏幕截图为enter image description here

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

    所以问题是:

    1. 为什么/ src的所有者和群组是1000:员工?
    2. 如何解决此问题?
    3. 我确定解决方案很简单,但我无法找到它。 请帮忙!

      P.S。如果您知道如何解决此问题,请随时为回购做出贡献。

1 个答案:

答案 0 :(得分:0)

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

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

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