首页 > 解决方案 > 使用 Docker for Windows 时的 Wordpress 写访问权限

问题描述

我想设置一个本地 Wordpress 开发环境,所以我正在尝试 Docker for Windows 和 WSL。我使用了标准图像(wordpress:4.9.7、mysql:5.7 和 phpmyadmin/phpmyadmin)并使用了 docker-compose。我可以运行 Wordpress,但在尝试更新或添加插件时遇到问题。

我在 docker-compose.yml 的 Wordpress 服务部分有这个:

volumes:
  - ./wp-content:/var/www/html/wp-content

这意味着:

  1. 我可以在主机中编辑主题和插件文件(很棒),但是......
  2. 容器的 /var/www/html/wp-content 文件夹是 root:root 755。所以 Wordpress 无法更新/添加插件或从管理员上传其他文件 - 我无法 chown 或 chmod 这个。

如果我从 docker-compose.yml 中删除卷,我将获得回写访问权限,但我无法从主机编辑或保留 wp-content 文件。

我只想要一个简单的 Wordpress 开发环境。有没有办法让它与 Docker for Windows 一起工作,还是我必须回到使用虚拟机?

编辑:据此,无法使用 Docker for Windows 托管挂载卷,并且除了 755 权限之外没有任何权限。

它没有指定容器中已安装卷的所有者是否可以从 root:root 更改。我已经尝试了各种方法在正在运行的容器中执行此操作(chown 似乎默默地失败了),以及尝试在 docker-compose.yml 中添加各种“用户:...”但没有成功。如果无法设置或修改共享卷的所有者,则 Wordpress 无法写入该共享卷。

一种可能的解决方案可能是在开发过程中使用挂载的卷(即在 Windows 主机上的 Sublime 中编写代码时),然后在我需要授予 Wordpress 写权限时删除挂载(例如更新插件或添加媒体 - 基本上只要它实际上需要运行)。听起来很可怕,但似乎我的选择有限。

如果有人有任何其他建议,仍然会喜欢一个好的 Windows 工作流程。我希望有一种方法可以更改容器中已安装卷的所有者。我还没有找到任何明确说明这是或不可能的东西,所以希望得到一些关于这方面的指导。

标签: wordpressdockerdocker-composedocker-for-windows

解决方案


这里有几个选项:

  1. user: root使用compose 文件以 root 身份启动容器。
  2. 构建您自己的 Docker 镜像,使用FROM wordpressRUN chmod -R 766 /var/www/html/wp-content
  3. docker exec --user root -it <container> bash使用并运行手动进入当前运行的容器chmod -R 766 /var/www/html/wp-content

推荐阅读