我正在开发PHP应用程序而且我一直坚持使用Docker卷。我试图为我的PHP应用程序创建一个单独的仅数据容器,但由于权限问题而无法使其正常工作...我已经用Google搜索并尽可能阅读并且最接近工作解决方案is described here
但它有点陈旧,我也无法使它发挥作用。
我使用简单的测试代码创建了一个repo: https://github.com/oleynikd/docker-volumes-permissions/
这个简单的项目使用docker-compose来运行2个容器:
php代码映射到php容器,位于/src
目录。
主要问题是PHP无权写入代码目录,因为它以 www-data 用户身份运行,但代码的目录属于id 1000 和员工。
运行docker-compose并访问/index.php后,您会看到显示权限问题的警告和ls -lah
输出。屏幕截图为
我试图通过将RUN mkdir -p /src && chown -R www-data:www-data /src
添加到php Dockerfile来解决此问题,但这并没有帮助。
所以问题是:
我确定解决方案很简单,但我无法找到它。 请帮忙!
P.S。如果您知道如何解决此问题,请随时为回购做出贡献。
答案 0 :(得分:0)
文件的所有者为1000:staff
,因为1000:1000
是主机上文件所有者的uid:gid
。
您可以使用卷来避免它,而无需在主机上指定文件的路径,并在dockerfile中添加带有COPY
指令的文件。但也许您需要轻松访问主机上的这些文件?
对于开发环境(仅限开发环境),我使用a hacky solution that I described in this answer进行管理。